Tag Archives: grep command tutorial for beginners

19 grep command examples

Beginners guide to learn grep command with these 19 different practical examples.

Learn grep command with examples

grep : one of the widely used Linux / Unix commands which help sysadmins narrowing down their searches! grep stands for Global Regular Expression Print which is used for searching regular expressions within the source stream of data.

grep command syntax is simple.

grep <switch> <string to search> file

where the switch is from the variety of switches available to use with command. string to search is a regular expression that you want to search within source data. The file is a source of data in which you expect grep command to search.

It is also used widely with pipe for searching strings in data outputted by the previous command. In such a scenario, syntax followed is –

command1 | grep <switch> <string to search>

where output of command1 is being searched using grep command.

We are sharing here 19 grep command practical examples which will help beginners to well versed with this command and use it in their daily operations. Without further delay, let’s learn to grep command with below 20 examples. In all below examples, we will be searching string ‘kerneltalks’ in file1 which is as below –

root@kerneltalks # cat file1
This is demo file for kerneltalks.com
Demo file to be used for demonstrating grep commands on KernelTalks blog.
We are using kerneltalks as a search string for grep examples
Filling data with kernelTalks words for demo purpose.
This line does not contain our targeted search string.
Junk data kasdiohn fjad;ioe;ion cslfns;o;nfg

Find out string in file

# grep kerneltalks file1
This is demo file for kerneltalks.com
We are using kerneltalks as a search string for grep examples

Recursive search in the directory

You can use recursive grep in the directory to search for string/pattern in all files within a directory.

# grep -r "kerneltalks" /tmp/data

OR

# grep -R "kerneltalks" /tmp/data

Count pattern match in grep

You can use -c i.e. count switch with grep command to count how many times a pattern is matched in given data.

# grep -c kerneltalks file1
2

Search exact word in the file

Normally, grep returns lines from data that have pattern matching in it. If you want to search exact word in data then use -w switch.

# grep -w kerneltalks file1
This is demo file for kerneltalks.com
We are using kerneltalks as a search string for grep examples

You can combine it with count switch above and can get the number of times the exact word appeared in the file.

Ignore case while searching with grep

To ignore case while finding match use -i switch i.e. case-insensitive match. So when you search for kerneltalks with -i switch it will show the occurrence of kerneltalks, KERNELTALKS, KernelTalks, etc.

# grep -i kerneltalks file1
This is demo file for kerneltalks.com
Demo file to be used for demonstrating grep commands on KernelTalks blog.
We are using kerneltalks as a search string for grep examples
Filling data with kernelTalks words for demo purpose.

Use of wild card with grep

Wild cards or repetition operators can be used with grep command.

# grep kernel* file1

here, * match anything which precedes with string kernel. You can use repetition operators like ?, *, + with grep.

Reverse grep operation

If you want to display data just by omitting the lines containing your targeted string then you can use grep operation in a reverse way i.e. by using -v switch. Some people also call it an inverted match or grep operation.

# grep -v kerneltalks file1
Demo file to be used for demonstrating grep commands on KernelTalks blog.
Filling data with kernelTalks words for demo purpose.
This line does not contain our targeted search string.
Junk data kasdiohn fjad;ioe;ion cslfns;o;nfg

The above command displays all lines within file1 except the ones which contain string kerneltalks.

Display N lines before matching string using grep

Use of -B switch followed by N number argument will let you display N lines before matching string in a file.

# grep -B 2 targeted  file1
We are using kerneltalks as a search string for grep examples
Filling data with kernelTalks words for demo purpose.
This line does not contain our targeted search string.

The above command will display 2 lines above the line which contains string targeted including the line with the string.

Display N lines after matching string using grep

Opposite to above, if you want to display N lines after the match is found, use -A switch with the same above syntax.

# grep -A 2 targeted  file1
This line does not contain our targeted search string.
Junk data kasdiohn fjad;ioe;ion cslfns;o;nfg

Here it will display 2 lines below the line which has string targeted in it including a line with the string.

Display N lines around matching string using grep

Using both -A and -B switches, you can display N lines before and after of matching string line. But, grep comes with inbuild switch -C which will do this for you.

# grep -C 1 targeted  file1
Filling data with kernelTalks words for demo purpose.
This line does not contain our targeted search string.
Junk data kasdiohn fjad;ioe;ion cslfns;o;nfg

The above command will display 1 line above and 1 line after the line which has matching string.

Match multiple pattern with grep

Searching more than one pattern/string is possible with grep. Stack up your strings using -e switch.

# grep -e Junk -e KernelTalks file1
Demo file to be used for demonstrating grep commands on KernelTalks blog.
Junk data kasdiohn fjad;ioe;ion cslfns;o;nfg

It will search for string1 and string2 in file1 and display all lines with either string in them.

List only file names with matching string in them

When you are searching through a bunch of files and only interested in file names within which string is matched then use -l switch.

# grep -l kerneltalks *.log

Here, we are searching string kerneltalks in all files ending with .log. Since -l switch is used, grep will display only file names where string match is found.

Display line number of match with grep

If you want to get the line number where your string found the match, you can use -n switch.

# grep -n kerneltalks file1
1:This is demo file for kerneltalks.com
3:We are using kerneltalks as a search string for grep examples

Display matched string only rather than whole line of match

By default, grep displays the whole line which contains the match of your searched string. To display only matched string rather than the whole line, you need to use -o switch. Obviously, it not useful when you are searching for the whole string or word but it is very useful when you are searching with wild cards.

# grep -o kernel* file1

Coloring up your grep search output

To highlight matched strings in output use –-color switch

# grep --color=always kerneltalks file1
This is demo file for kerneltalks.com
We are using kerneltalks as a search string for grep examples

You have three options to used with --color switch. auto, always and never

Grep out blank lines

You can search and count for blank lines with grep.

# grep -e ^$ file1

It’s helpful for removing blank lines from a file and get only data lines. Use reverse grep we saw earlier (-v switch)

# grep -v -e ^$ file1

It will show you only data lines, omitting all blank lines. You can redirect it to a new file and get a clean data file! You can use the same technique to remove hashed entries from the file by using ^# as a search string. This will helps to remove comments from scripts as well.

Invoke Egrep using grep

Egrep is extended grep with additional character support. egrep is derivative from grep utility. You can use it with egrep command or invoke using grep as below :

# grep -E

Fixed grep Fgrep using grep

Fixed grep is used for fast searching direct strings without any meta-characters or regular expressions. As the name suggests, fgrep is fixed grep! Only direct strings to search and it will be a bit fast than normal grep. fgrep is also another derivative from normal grep and used as fgrep separate command. But it can also be invoked using grep with below switch –

# grep -F

Search pattern in zip file

One more derivative of grep is zgrep. IT is used to find and match string in zip files. It uses almost the same switches as grep only difference is you have to source its zip file to search

# zgrep kerneltalks file2.gz

Let us know if you have any other grep command examples in comments below which re really helpful for sysadmin in day to day operations.