Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I want to use Unix's grep function to pull out multiple lines (with different keywords) from a file in one command line.

For example, I have something like:


And I want a sub-version of the file with just the A1, B3, and C2 lines.

How do I do that?

share|improve this question
Take a look at this… – Vijay Apr 18 '14 at 19:17
up vote 4 down vote accepted

Grep allows you to use regular expressions to match patterns within the file using the -E flag, or you can use the egrep command which is equivalent to grep -E:

grep -E 'A1|B3|C2' filename


egrep 'A1|B3|C2' filename

The vertical bar, |, is the OR operator meaning match string A1 or B3 or C2.

Regular expression syntax varies from tool to tool, but generally the syntax is the same. Here is a regex test harness for Ruby that I use frequently to test and build regular expressions:

However, any introduction to regular expressions should be prefaced with a warning that they are limited in their capabilities, and the adage is:

Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.

share|improve this answer
thanks i might use that one next time – Kirstin Oct 6 '12 at 7:11

Found it. Put the terms in a text file separated by new lines, then enter that as the pattern to match with the -f flag.




grep -f pattern_file.txt input_file.txt
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.