grep command in Unix/Linux
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.txtHere's the output:

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 ofgrep.[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
1. Case insensitive search
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.txtOutput:

2. Displaying the Count Matches Using grep
We can find the number of lines that matches the given string/pattern
grep -c "unix" geekfile.txtOutput:

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.txtOutput:

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.txtOutput:

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.txtOutput:

6. Show Line Numbers with grep -n
To show the line number of file with the line matched.
grep -n "unix" geekfile.txtOutput:

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.txtOutput:

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.txtOutput:

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.txt10. Specifies expression with -e option
Can use multiple times :
grep –e "Agarwal" –e "Aggarwal" –e "Agrawal" geekfile.txt11. 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.txttellsgrepto read patterns from the filepattern.txt, one pattern per line (each line is treated as a pattern/regular expression).grepthen searchesgeekfile.txtand prints lines fromgeekfile.txtthat match any of the patterns inpattern.txt.
Output:
pattern.txt
Agarwal
Aggarwal
Agrawalgeeksfile.txt
Raj Agarwal
Suman Aggarwal
Kiran AgrawalCommand:
grep -f pattern.txt geekfile.txtOutput:
Raj Agarwal
Suman Aggarwal
Kiran Agrawal- Each line of
geekfile.txtthat contains any of the names frompattern.txtis 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.txtOutput:
