Open In App

grep command in Unix/Linux

Last Updated : 03 Nov, 2025
Comments
Improve
Suggest changes
185 Likes
Like
Report

The grep command is one of the most useful tools in Linux and Unix systems. It is used to search for specific words, phrases, or patterns inside text files, and shows the matching lines on your screen.

grep Command is useful when you need to quickly find certain keywords or phrases in logs or documents. Let’s consider an example:

Search for a word in a file

If you have a file called notes.txt and you want to find all lines containing the word Python, you can use:

grep "python" notes.txt

Here's the output:

1

Syntax of grep Command in Unix/Linux

The basic syntax of the `grep` command is as follows:

grep [options] pattern [files]
  • [options]: These are command-line flags that modify the behavior of grep
  • [pattern]: This is the regular expression you want to search for.
  • [file]: This is the name of the file(s) you want to search within. You can specify multiple files for simultaneous searching.

Commonly Used grep Options

The -i option enables to search for a string case insensitively in the given file. It matches the words like "UNIX", "Unix", "unix". 

grep -i "UNix" geekfile.txt

Output: 

Case insensitive search
Case insensitive search

2. Displaying the Count Matches Using grep

We can find the number of lines that matches the given string/pattern 

grep -c "unix" geekfile.txt

Output: 

Displaying the count number of the matches
Displaying the count number of the matches

3. Display the Matching Filenames Using grep

We can just display the files that contains the given string/pattern. 

grep -l "unix" *

or

grep -l "unix" f1.txt f2.txt f3.xt f4.txt

Output: 

The file name that matches the pattern
The file name that matches the pattern

4. Checking Whole Words Using grep

By default, grep matches the given string/pattern even if it is found as a substring in a file. The -w option to grep makes it match only the whole words. 

grep -w "unix" geekfile.txt

Output: 

checking whole words in a file
checking whole words in a file

5. Display Matched Pattern Using grep

By default, grep displays the entire line which has the matched string. We can make the grep to display only the matched string by using the -o option. 

grep -o "unix" geekfile.txt

Output: 

Displaying only the matched pattern
Displaying only the matched pattern

6. Show Line Numbers with grep -n

To show the line number of file with the line matched. 

grep -n "unix" geekfile.txt

Output: 

Show line number while displaying the output
Show line number while displaying the output

7. Inverting the Pattern Match Using grep

You can display the lines that are not matched with the specified search string pattern using the -v option. 

grep -v "unix" geekfile.txt

Output: 

Inverting the pattern match
Inverting the pattern match

8. Match Lines Starting with a String using grep

The ^ regular expression pattern specifies the start of a line. This can be used in grep to match the lines which start with the given string or pattern. 

grep "^unix" geekfile.txt

Output: 

Matching the lines that start with a string
Matching the lines that start with a string

9. Match Lines Ending with a String using grep

The $ regular expression pattern specifies the end of a line. This can be used in grep to match the lines which end with the given string or pattern. 

grep "os$" geekfile.txt

10. Specifies expression with -e option

Can use multiple times : 

grep –e "Agarwal" –e "Aggarwal" –e "Agrawal" geekfile.txt

11. Use -f to Read Patterns from a File

It is used to search for multiple patterns, listed in a separate file, within another target file.

Command:

grep –f pattern.txt  geekfile.txt
  • -f pattern.txt tells grep to read patterns from the file pattern.txt, one pattern per line (each line is treated as a pattern/regular expression).
  • grep then searches geekfile.txt and prints lines from geekfile.txt that match any of the patterns in pattern.txt.

Output:

pattern.txt

Agarwal
Aggarwal
Agrawal

geeksfile.txt

Raj Agarwal
Suman Aggarwal
Kiran Agrawal

Command:

grep -f pattern.txt geekfile.txt

Output:

Raj Agarwal
Suman Aggarwal
Kiran Agrawal
  • Each line of geekfile.txt that contains any of the names from pattern.txt is printed

12. Print Specific Lines from a File with grep

-A prints the searched line and n lines after the result, -B prints the searched line and n lines before the result, and -C prints the searched line and n lines after and before the result. 

Syntax:

grep -A[NumberOfLines(n)] [search] [file]  
grep -B[NumberOfLines(n)] [search] [file]  
grep -C[NumberOfLines(n)] [search] [file]  

Example:

grep -A1 learn geekfile.txt

Output:  

Print n specific lines from a file
Print n specific lines from a file

Explore