How to Use grep Command in Linux?

The grep command, short for Global Regular Expression Print, is a powerful tool in Linux used to locate and display lines in a file that match a specific pattern. It's especially handy for quickly identifying whether a particular entry exists, even in extensive files like logs.

With its flexibility, you can enhance the command with various options to perform tasks such as inverted searches or multi-keyword lookups. 

This guide will provide an overview of how to use the grep command in Linux, covering its basics what is grep? The grep command syntax, key options, and practical applications for handling files effectively.

Grep Command in Linux

The grep command is useful for searching a specific string or regular expression within a text file. To illustrate its functionality, you can start by creating a text file named ‘test.txt’ and adding some sample content to it, as shown in the following example.

You can use the grep commands to explore how to search and customize outputs to fit your needs. To find a specific string within a file, use the following syntax:

grep "string" file name

For example, we want to search a string “system” in a file test.txt:

how to use grep command in linux?

As shown, grep successfully finds and highlights the string "system," displaying the lines where it appears. If the file is located in another directory, be sure to provide the complete file path in the command, as illustrated below.

$ grep "string" /path/to/file

$ grep --color "Linux" test.txt

how to use grep command in linux?

Recursively Search for a String in all Directories

To search for a string within the current directory and all its subdirectories, you can use the -r flag with the grep command, as shown below.

$ grep -r "Linux" *

how to use grep command in linux?

Counting the Number of Matching Lines with the -c Option

To count how many lines contain the string pattern, use the -c option with the grep command. This will give you the total number of lines where the pattern appears.

$ grep -c "Linux" test.txt

how to use grep command in linux?

Ignore Case Sensitivity

To ignore case sensitivity while searching, use the -i flag. For example, the command grep -i "linux" welcome.txt will match "Linux" regardless of the letter case.

$ grep -i "linux" test.txt

how to use grep command in linux?

Inverting Grep Output with the -v Option

The -v flag reverses the grep output, displaying lines that do not match the specified pattern. This option ensures only non-matching lines are printed. For example, you can use it to exclude specific strings from the output.

$ grep -v "Linux" test.txt

how to use grep command in linux?

As you can see, grep has displayed the lines that do not contain the search pattern.

Searching for Exact Words

To search for an exact word rather than a substring, use the -w option:

$ grep -w "system" test.txt

how to use grep command in linux?

Numbering Matching Lines

To display the line numbers where a pattern is found, use the -n option:

$ grep -n "Linux"test.txt

Using Grep with Pipes

Combine grep with pipes to refine output. For instance, check if a package is installed in Ubuntu:

$ dpkg -l | grep -i "openssh"

Displaying Lines Before or After Matches

Use -A to show lines after a match or -B to show lines before it:

$ ifconfig | grep -A 4 ens3   # Displays 4 lines after the match  

$ ifconfig | grep -B 3 ether  # Displays 3 lines before the match  

Using Regular Expressions with Grep

Regular expressions (REGEX) can enhance searches:

  • ^ matches the start of a line. 

$ grep ^d test.txt

  • $ matches the end of a line. 

$ grep x$ test.txt

  • [a-z] matches characters in a range.
  • [^...] excludes specific characters.

Getting Help with Grep

To explore more options and flags, run:

$ grep --help

Conclusion

In this guide, we demonstrated how to use grep command in Linux. Using the grep command, you can easily search for specific patterns and strings from a file. 

Unlock limitless hosting potential with 10GBVPS! Experience lightning-fast speeds, unlimited bandwidth, and global reliability—boost your website performance today!

Blog