There are many well-known benefits provided by grep to the user who doesn't remember what his or her files contain. Even users of non-UNIX systems who make fun of its obscure name wish they had a utility with its power to search through a set of files for an arbitrary text pattern, known as a regular expression ( 26.4 ) .
The main function of grep is to look for strings matching a regular expression and print only the lines found. Use grep when you want to look at how a particular word is used in one or more files. For example, here's how to list the lines in the file ch04 that contain either run-time or run time :
".." |
$
|
---|
Another use might be to look for a specific
nroff
/
troff
macro (
43.14
)
in a file. In a file coded with mm macros, the following command will list top-level (
.H1
) and second-level (
.H2
) headings:
[..] |
$
|
---|
In effect, it produces a quick outline of the contents of these files.
grep is also often used as a filter ( 1.3 ) , to select from the output of some other program. For example, not all versions of ps ( 38.5 ) allow you to print out the processes belonging to another user, but it's easy to simulate this behavior by listing all processes and piping the output to grep :
%ps -aux | grep jerry
There are several options commonly used with
grep
. The
-i
option specifies that the search ignore the distinction between uppercase and lowercase. The
-c
option (
15.8
)
tells
grep
to return only a count of the number of lines matched. The
-w
option searches for the pattern "as a word." For example,
grep if
would match words like
cliff
or
knife
, but
grep -w if
wouldn't. The
-l
option (
15.7
)
returns only the name of the file when
grep
finds a match. This can be used to prepare a list of files for another command. The
-v
option (
27.3
)
reverses the normal action, and only prints out lines that don't match the search pattern.
- from UNIX Text Processing , Hayden Books, 1987, Chapter 11