grep command

Grep and Friends

 

grep command

In this Linux Basics article, we will have a look at the grep command and its variants, egrep (Extended grep), fgrep (Fixed grep), pgrep (Process grep) and rgrep (Recursive grep). We asked our Host Africa Linux guru a few questions and this is what he came up with.

Q: What does it do?

A: It finds all lines of text that contain an expression.

Q: Where does a strange name like grep come from?

A: It does seem quite appropriate if we associate it with the word grab, but in truth, it is an abbreviation for Global Regular Expression Print. This is because the grep command uses “Basic Regular Expressions” as well as normal strings as a search pattern. In Basic Regular Expressions (BRE), meta-characters like: '{','}','(',')','|','+','?' lose their meaning and are treated as normal characters and need to be escaped if they are to be treated as special characters.

Q: How do we use grep?

A: If we had a file called sample.txt containing the following (note the last line is blank):

The quick
brown
fox
jumped over the
lazy
dog
.

Then the following lines show how the grep command may be used:

# Show the line containing an x
grep x sample.txt 
fox
# Show all lines with spaces
grep ' ' sample.txt 
The quick
jumped over
the lazy
# Show empty lines
grep ^$ sample.txt 

# Show all non-empty lines (-v turns it into a negative - NOT containing search string)
grep -v ^$ sample.txt 
The quick
brown
fox
jumped over 
the lazy
dog
.
# Show lines starting with the letter t, but ignore the case ( -i )
grep -i ^t sample.txt 
The quick
the lazy

This is just a small sample of what can be done with just the basic grep command.

Q: What is the egrep command?

A: The egrep command is basically an alias for grep -E or extended grep.  This commands allows you to use regular expressions in your search and they will be interpreted as such. With the normal grep, regular expressions are regards as part of the search string unless escaped with a backslash ( \ ).

Here are a few examples using egrep.

# Show lines containing 'x' or 'z'
egrep 'x|z' sample.txt 
fox
the lazy
# Show lines containg the word 'the', with the options of a capital or lowercase 't'
egrep [Tt]he sample.txt
The quick
the lazy
# a longer way to do the same as above
egrep 'The|the' sample.txt
The quick
the lazy

Q: And the fgrep command?

A: This should actually be the default for anyone starting to learn these commands. The fgrep command is an alias for grep -F and is called fixed grep. This version of grep will ignore any strange expressions and ALWAYS search for exactly the string you ask it to find. Thus fgrep [Tt]he sample.txt will search for the text “[Tt]he” in the sample file. This search then gives us a zero result as this string does not exist in the sample.txt file.

Q: What about the rgrep command

A: This command is an alias for grep -r. It is called recursive grep. This is useful to find all files containing an expression. Here is an example using our sample.txt file:

grep -r "the lazy" ./*.txt
./sample.txt:the lazy

Q: Does the pgrep command fit in here?

A: No. This is not a, strictly speaking, part of the grep family as it forms part of the process control command set. The pgrep command is used to return a PID or Process ID of a process that contains the search string in its name.

In our next exciting Linux Basics article, we will chat about the sed command and see what we can say about it!

hand codingHappy hosting!

we're happy to help!

Talk to a hosting specialist today and discover which options will work best for you.


Call us on +27 21 554 3096
Copyright © 2020 HOSTAFRICA - All rights reserved.

By visiting this website, you agree to its terms of use, which can be accessed by clicking on the following link: Website Terms of use
We Accept: EFT, Debit Cards, Credit Cards and Mobile Payments
Accepted payment methods