How do I use grep command in Linux operating systems?
The grep command which stands for “global regular expression print,” processes text line by line and prints any lines which match a specified pattern.
It is a command line utility for searching plain text data sets for lines that match a regular expression.
The grep command searches the given file for lines containing a match to the given strings or words. By default, grep displays the matching lines.In addition, three variant programs egrep, fgrep and rgrep are available. egrep is the same as grep -E. fgrep is the same as grep -F. rgrep is the same as grep -r. Direct invocation as either egrep or fgrep is deprecated, but is provided to allow historical applications that rely on them to run unmodified
Use grep to search for lines of text that match one or many regular expressions, and outputs only the matching lines.
The name, “grep”, derives from the command used to perform a similar operation, using the Linux text
editor ed:
g/re/p
grep Command Syntax
grep 'word' filename grep 'string1 string2' filename cat otherfile | grep 'something' command | grep 'something' command option1 | grep 'data' grep --color 'data' fileName
How Do I Use grep To Search File?
Search /etc/passwd for online user:
$ grep online /etc/passwd
You can force grep to ignore word case i.e match online, Online,ONLINE and all other combination with -i option:
$ grep -i "online" /etc/passwd
Use grep recursively
You can search recursively i.e. read all files under each directory for a string “111.100.1.1”
$ grep -r "111.100.1.1" /etc/
Use grep to search words only
When you search for online, grep will match useronline, online123, etc. You can force grep to select only those lines containing matches that form whole words i.e. match only online word:
$ grep -w "online" /path/to/file
Use grep to search 2 different words
use egrep as follows:
$ egrep -w 'word1|word2' /path/to/file
Count line when words has been matched
grep can report the number of times that the pattern has been matched for each file using -c (count) option:
$ grep -c 'word' /path/to/file
Also note that you can use -n option, which causes grep to precede each line of output with the number of the line in the text file from which it was obtained:
$ grep -n 'word' /path/to/file
Grep invert match
You can use -v option to print inverts the match; that is, it matches only those lines that do not contain the given word. For example print all line that do not contain the word bar:
$ grep -v bar /path/to/file
Linux pipes and grep command
grep command often used with pipes. For example print name of hard disk devices:
# dmesg | egrep '(s|h)d[a-z]'
Display cpu model name:
# cat /proc/cpuinfo | grep -i 'Model'
However, above command can be also used as follows without shell pipe:
# grep -i 'Model' /proc/cpuinfo
How do I list just the names of matching files?
Use the -l option to list file name whose contents mention main():
$ grep -l 'main' *.c
Atlast, you can force grep to display output in colors:
$ grep --color vivek /etc/passwd
Apart from the above if you want to delete files and folders via command SSH you can click here.