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
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
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
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
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
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
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
grep -r cyberspace #output my-sub-dir/file-x.txt:cyberspace american-english:cyberspace british-english:cyberspace words:cyberspace