[Article 27.12 gave a sense of how easy it might be to write custom search programs in Perl...but until you learn the language, you can't rip these off whenever you find yourself in need. This article describes a few more custom greps written in Perl. It doesn't show the scripts themselves, just how to use them. If you like them, they are on the disc and the online archive. -TOR ]
tgrep
|
The tgrep program grep s only those files containing textual data. It's useful in a directory that has mixed binary and textual files, when the filenames aren't a sufficient clue to the nature of the file. tgrep has one option, -l , which causes it to list the files containing the pattern rather than listing the lines containing the pattern. |
---|
pipegrep
|
The
pipegrep
program
grep
s the output of a series of commands. The difficulty with doing this using the normal
grep
program is that you lose track of which file was being processed. This program prints out the command it was executing at the time, including the filename. The command, which is a single argument, will be executed once for each file in the list. If you give the string
{}
anywhere in the command, the filename will be substituted at that point. Otherwise the filename will be added on to the end of the command. This program has one option,
-l
, which causes it to list the files containing the pattern. For example [
nm
is a programmers' utility that prints symbol name lists-
JP
]: |
---|
$cd /usr/lib
$pipegrep 'sys_nerr' nm lib*.a
nm /usr/lib/libX11.a |: U _sys_nerr nm /usr/lib/libXaw.a |: U _sys_nerr nm /usr/lib/libXaw.a |: U _sys_nerr nm /usr/lib/libc.a |: U _sys_nerr . . .
cgrep
|
The cgrep program grep s for a pattern in the specified files, and prints out that line with several lines of surrounding context. This context grep script lets you specify how many lines of context you want if you want more or less than the default. For example: |
---|
$cgrep -3
pattern files
would give you three lines of context above and below the matching line. Each occurrence is separated from the next by a short horizontal line (
-----
).
- from O'Reilly & Associates' Programming Perl
, ,