The grep command offers interesting options to help you find what you want from text files. The grep command makes it easy to find strings in text files on Linux systems, but that’s just a start. It can be used to search through these files for multiple strings or regular expressions at the same time. It can also ignore case when needed, and it can count the lines in the resulting output for you. This post shows how to use grep in all these ways. Basic grep The simplest grep command looks like the one shown below. This “find string in file” command will show all the lines in the file that contain the string, even when that string is only part of a longer one. $ grep word story The wording suggests there was more to the story than anyone wanted to admit. The sword had been left behind the shed. It was several days before it was Finding multiple strings There are a number of ways to search for a group of strings in a single command. In the command below, the ‘|’ character serves as an “or” function. The command will display any lines in the file that contain the word “xray”, the word “tape” or both. $ grep -E 'xray|tape' 4letters tape xray The -E option allows “extended regular expressions” to provide this function. Another option is to list each string separately following the -e option. $ grep -e xray -e tape 4letters tape xray You can also use a command like the one below to find multiple strings. The “|” characters separate each word that you want to find. $ grep 'xray|tape' 4letters tape xray This form of grep command is not limited to two strings. Add as many strings as you need. $ grep 'xray|tape|hope|boat' 4letters boat hope tape xray You can also use regular expressions like ^xr in commands to look for strings that begin with particular letters. $ grep '^xr|tape|hope|boat' ../4letters boat hope tape xray xref The same search can be performed using grep‘s -e option. In this case, each string is included following its own -e. $ grep -e ^xr -e tape -e hope -e boat 4letters boat hope tape xray xref If you only want to find exact matches for your strings, use a command like the one below that will only display strings when they are included in the file as full words – not substrings. The command below fails to find the word “xray” because the “y” is omitted and the -w option is used. $ grep -w 'xra|boat' 4letters boat In the examples below, the line containing the word “session” is only included when the full word is used in the command. $ grep -w 'fly|session' recording_commands When you first open a session on the command line, the oldest commands in their history command numbers during a single login session. want "on the fly". In other words, type "script" and each command that $ grep -w 'fly|sessio' recording_commands want "on the fly". In other words, type "script" and each command that Using regular expressions Note that the grep -e command will allow you to search for strings that begin with a hyphen. Without the -e, this wouldn’t work. $ grep -e -xray myopts -xray The command below does not find the string. $ grep -xray myopts Ignoring case To find strings in text files regardless of whether the letters are in uppercase or lowercase, use the grep command’s -i (ignore case) option. In the examples below, the word “it” is found 10 times in the first case and 11 times when the -i option is used. $ grep 'it' recording_commands | wc -l 10 $ grep -i 'it' recording_commands | wc -l 11 Counting lines And here’s a little surprise. Instead of using the wc command to count the lines in the grep output, you can use the grep command itself. Just add the -c (count) option. The commands below generate the same results as the previous two commands without piping the output to the wc command: $ grep -c 'it' recording_commands 10 $ grep -ic 'it' recording_commands 11 Wrap-up The grep command can do a lot more than find each instance of a single string in a text file. In fact, it can look for multiple strings in several different ways. It can also both ignore case and count the number of lines that match your request. Related content how-to How to find files on Linux There are many options you can use to find files on Linux, including searching by file name (or partial name), age, owner, group, size, type and inode number. By Sandra Henry Stocker Jun 24, 2024 8 mins Linux opinion Linux in your car: Red Hat’s milestone collaboration with exida With contributions from Red Hat and critical collaborators, the safety and security of automotive vehicles has reached a new level of reliability. By Sandra Henry Stocker Jun 17, 2024 5 mins Linux how-to How to print from the Linux command line: double-sided, landscape and more There's a lot more to printing from the Linux command line than the lp command. Check out some of the many available options. By Sandra Henry Stocker Jun 11, 2024 6 mins Linux how-to Converting between uppercase and lowercase on the Linux command line Converting text between uppercase and lowercase can be very tedious, especially when you want to avoid inadvertent misspellings. Fortunately, Linux provides a handful of commands that can make the job very easy. By Sandra Henry Stocker Jun 07, 2024 5 mins Linux PODCASTS VIDEOS RESOURCES EVENTS NEWSLETTERS Newsletter Promo Module Test Description for newsletter promo module. Please enter a valid email address Subscribe