How to grep multiple words or strings

There are cases where you search for files that contain a specific string or term. That is when Linux utilities such as grep or egrep can help. What if you are looking for files that must match more than one string? Here is a quick run down on how you can use grep or egrep to match multiple strings.

To grep for files that contain any of multiple keywords:

$ grep --color -E "word1|word2|word3" *.txt

To grep for files that contain all multiple keywords:

$ grep -l word1 *.txt | xargs grep -l word2 | xargs grep -l word3

To grep for files that contain multiple words (without any order) in one line:

grep word1 *.txt | grep word2 | grep word3

To grep for files that contain multiple ordered words in one line:

$ egrep '(word1.*word2.*word3)' *

Subscribe to Xmodulo

Do you want to receive Linux FAQs, detailed tutorials and tips published at Xmodulo? Enter your email address below, and we will deliver our Linux posts straight to your email box, for free. Delivery powered by Google Feedburner.

Leave a comment

Your email address will not be published. Required fields are marked *

Current day month ye@r *