
grep
is a Linux command line tool used for text-searching in files. It is a
versatile tool, capable of searching through single and multiple files as well
as recursively through directories.
grep
does not utilise a search index; instead, it performs searches in
real-time and does so very quickly. It matches a pattern of characters in a
specific file or directory of files and then displays the results.
grep command with examples
The basic grep
command requires only two arguments, (i) the pattern or string
to look for and (ii) the name of the file.
grep [string] [file]
For example, to search for the word cyberspace
in the file words
:
grep cyber words
#output
cyberspace
cyberspace's
cyberspaces
The results will display the entire line where the string is found. If there are no results, the command prints nothing.
How to find words with spaces or special characters with grep
Search patterns can be enclosed in either single or double inverted commas. This allows a search of more than one word or words with spaces or special characters.
grep "cyberspace's" words
#output
cyberspace's
The same rule applies to file names. Enclose the file name in either single or double inverted commas if it contains spaces:
grep "cyberspace's" 'words of the world.txt'
#output
cyberspace's
How to ignore case when searching with grep
grep
is case sensitive so search for England instead of england.
To ignore case, specify the -i
flag:
grep -i england words
#output
England
England's
How to find the exact word with grep
grep
prints every match found by default.
grep Peter words
#output
Peter
Peter's
Peters
Petersen
Petersen's
Peterson
Peterson's
Peters's
To find the exact word, specify the -w
flag:
grep -w Peter words
#output
Peter
Peter's
How to find the line number with grep
grep
can display the line number in the results. This is useful when
searching through a large file. To display line numbers in results, specify the
-n
flag.
grep -n -w Peter words
#output
14768:Peter
14769:Peter's
14770:Peters
14771:Petersen
14772:Petersen's
14773:Peterson
14774:Peterson's
14775:Peters's
Using regular expressions (regex) with grep when searching
The search query can be fine-tuned with regular expressions for more accurate
results. To search for exactly Peter and not wanting to see Peter’s, a
regex can be added. In this example, $
specifies end-of-line:
grep Peter$ words
#output
Peter
Search multiple files using grep command
One grep
command can search the contents of multiple files. To query more
than one file, separate the file names with a space.
grep -w cyberspace$ words "words of the world.txt"
#output
words:cyberspace
words of the world.txt:cyberspace
How to search one directory using grep command
All files in one directory can be searched by using an asterisk (*).
grep cyberspace *
#output
american-english:cyberspace
british-english:cyberspace
words:cyberspace
How to search a directory recursively using grep command
To search a directory and all of its sub-directories, the -r
flag can be
used.
grep -r cyberspace
#output
my-sub-dir/file-x.txt:cyberspace
american-english:cyberspace
british-english:cyberspace
words:cyberspace
See also