Grep command in Unix/Linux
The grep filter searches a file for a particular pattern of characters, and displays all lines that contain that pattern. The pattern that is searched in the file is referred to as the regular expression (grep stands for globally search for regular expression and print out).
grep [options] pattern [files]
If, it is not installed on your system, you can easily install it via your package manager (apt-get on Debian/Ubuntu and yum on RHEL/CentOS/Fedora).
$ sudo apt-get install grep #Debian/Ubuntu
$ sudo yum install grep #RHEL/CentOS/Fedora
Examples of using ‘grep’:
- grep foo /file/name
Searches the file /file/name for the word ‘foo’. Each match will be displayed on a separate line.
- grep -i “foo” /file/name
The option -i can be helpful Searches /file/name for ‘foo’ ignoring case of the word, ie foo Foo FOO etc.
- grep ‘error 123’ /file/name
grep is not limited to searching for just single words or strings. It can also search for sequences of strings, including phrases. This is achieved by enclosing the sequence of strings that forms the pattern in quotation marks (either single or double). The example above will search for the phrase ‘error 123’ in the file /file/name.
- grep -r “192.168.1.5” /etc/
grep’s search area can be broadened further by using its -r option to search recursively through an entire directory tree (i.e. a directory and all sub-directories within it). The example above searches all files in the /etc/ directory and all of its sub-directories (including their sub-directories) for the string ‘192.168.1.5’
- grep -w “foo” /file/name
When you search for foo, grep will match fooboo, foo123, etc. You can force grep to select only those lines containing matches that form whole words by using the -w option.
- grep -w ‘word1|word2’ /file/name
Searches for, and displays 2 different words in /file/name
- grep -c test /file/name
The -c option causes grep to only report the number of times that the pattern has been matched for each file, and to not display the actual lines. The example above would show the total number of times that the string “test” appears in the file /file/name.
- grep –context=6 error /file/name.txt
Sometimes we are not just interested in the matching line but also on the lines around matching lines, this is where the grep –context option is useful. It can be particularly helpful to see what happens before or after any Error or Exception. In the example above the –context option is used to print the 6 lines before and after a matching line with the word “error” in /file/name.txt