Grep is a powerful tool for searching a text, Grep means “Global regular expression print”. Basically, Grep searches a text file for the specified regular expression and outputs any line containing a match to standard output. So Grep command can be used to search some kind of text, word, pattern or sentence in a text file or a number of text files.
- Suggested Read: 12 Awesome Linux Find Command Examples
In this tutorial, we will show you how to use the Grep command with some practical examples.
Prerequisites
- A system running the Linux operating system.
- Access to a terminal/command line.
To Search a Specific String in a File
- To search for a string tecadmin in the file file1.txt, run the following command:
grep tecadmin file1.txt This command will print all lines that contain a word tecadmin:
tecadmin is a popular linux blog i love tecadmin tecadminlinux
- To search for an exact string tecadmin in the file file1.txt, run the following command:
grep -w tecadmin file1.txt This command will print all lines that contain a whole word tecadmin:
tecadmin is a popular linux blog i love tecadmin
- To search for a string tecadmin case insensitively in the file file1.txt, run the following command:
grep -i tecadmin file1.txt This command will print all lines that contain a word tecadmin case insensitively:
tecadmin is a popular linux blog i love tecadmin tecadminlinux Tecadmin is my favourite blog This is Tecadmin website
To Search a Specific String in Multiple File
- To search for a string linux in file file1.txt and file2.txt, run the following command:
grep -i linux file1.txt file2.txt This command will print all lines that contain a word linux in file1.txt and file2.txt:
file1.txt:tecadmin is a popular linux blog file1.txt:tecadminlinux file2.txt:Linux is an open-source operating system. file2.txt:linux is made by linus torvalds. file2.txt:linux is most popular operating system.
- To search for a string linux in all files in the current directory and sub-directories, run the following command:
grep -r linux * This command will print all lines that contain a word linux in all files in the current directory and sub-directories:
file1.txt:tecadmin is a popular linux blog file1.txt:tecadminlinux file2.txt:linux is made by linus torvalds. file2.txt:linux is most popular operating system. file3.txt:linux vs windows file3.txt:Ubuntu is a linux operating system
Inverse Grep Search
You can use grep command with -v option to print all lines that do not match a specific pattern of characters.
For example, print all lines that don’t contain the string linux in file1.txt and file2.txt, run the following command:
grep -v linux file1.txt file2.txt
This command will exclude all the lines that contain the string linux:
file1.txt:i love tecadmin file1.txt:Tecadmin is my favourite blog file1.txt:This is Tecadmin website file2.txt:Linux is an open-source operating system.
To List Filenames That Matches Specific Pattern
You can display only filenames that contain a specific string using -l option.
For example, list all filenames in the current directory that matches the string tecadmin, run the following command:
grep -l tecadmin *
You should see the following output:
file1.txt
Display the Number of Matches
You can use grep with -c option to display all files with the number of lines that matches the given string.
For example, to display all files with the number of lines that matches a string linux in the current directory, run the following command:
grep -c linux *
You should see the following output:
file1.txt:2 file2.txt:2 file3.txt:2
Display Line Number with Matching Pattern
You can use grep with -n option to print line numbers with matching patterns.
For example, to display line number that matches the pattern linux in the current directory, run the following command:
grep -n linux *
You should see the following output:
file1.txt:1:tecadmin is a popular linux blog file1.txt:3:tecadminlinux file2.txt:2:linux is made by linus torvalds. file2.txt:3:linux is most popular operating system. file3.txt:1:linux vs windows file3.txt:2:Ubuntu is a linux operating system
You can also display one line before and after the matching string using the option c and n with grep command.
For example, display one line before and after the matching string linux in file4.txt, run the following command:
grep -n -C 1 linux file4.txt
You should see the following output:
1-Hi, i am tecadmin user 2:i am linux operating system 3-i am windows operating system
Display Only Matching Pattern
By default, grep command prints the entire line which matches a pattern.
You can print only matching patterns using the -o option.
For example, search for file1.txt that matches the string/pattern linux with the following command:
grep -o linux file1.txt
You should see the following output:
linux linux
Conclusion
In the above tutorial, you learned how to use the grep command to search for a specific string in files. I hope you have now enough knowledge of grep command and how it is used in various conditions.
1 Comment
To search for multiple strings you need to use -E option or egrep.