Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .