Grep

grep is a command line utility originally written for use with the Unix operating system. The default behaviour of grep takes a regular expression on the command line, reads standard input or a list of files, and outputs the lines containing matches for the regular expression.

The name comes from a command in the Unix text editor ed that takes the form:


 * g/re/p

This means "search globally for matches to the regular expression re, and print lines where they are found". There are various command line switches available when using grep that modify the default behavior.

Variations
There are many derivatives of grep, for example agrep which stands for approximate grep to facilitate fuzzy string searching, fgrep for fixed pattern searches, and egrep for searches involving more sophisticated regular expression syntax. Tcgrep is a rewrite of grep and uses Perl regular expression syntax. All these variations of grep have been ported to many computer operating systems.

Many other commands contain the word "grep." GNU's pgrep, for instance, displays the process numbers which match a regular expression.

Conversational Verb
As the name "grep" neatly fits the phonology of English, it is often used as a verb, meaning to search – usually, to search a known set of files, as one would with the grep utility. The direct object is the set of files searched: "Joe grepped his Usenet spool for his name." Contrast with google.

The word "grep" has also become a synonym for regular expressions themselves. Many text and word processors now employ regular expression search features, which those applications will often refer to as a "grep tool" or "grep mode" in which one creates "grep patterns", causing confusion, especially in non-Unix environments.

Examples
To search all files in the [current directory for the string "foo".


 * grep foo *

To search all files in the current directory and all its subdirectories for the string "foo". (The character "." is a relative path from the current directory to itself.)


 * grep -r foo .

As above, but only output the names of files containing the string "foo".


 * grep -lr foo .

Show all mozilla related processes running.


 * ps aux | grep mozilla

Find all files containing the word bleh.


 * grep bleh -R /*