Archive for January, 2009

if I wanted to match ‘foo13245’, can I use grep ‘foo[\d]*’?

Wednesday, January 7th, 2009

Nope, \d has no meaning (unless using -P for PCRE). You need [[:digit:]] instead; i.e.,

grep 'foo[[:digit:]]*'

How can i search for files which contain string A but not string B ?

Tuesday, January 6th, 2009

Pipe the output of grep through grep -v. For example:

grep 'A' file | grep -v 'B'

Why grep ‘foo|bar’ file doesn’t work?

Monday, January 5th, 2009

The bar | has no special meaning in BRE (basic regular expressions). Use extended regular expressions (ERE) such as:

grep -E 'foo|bar' file


egrep 'foo|bar' file

In GNU grep, you can also force the spcial meaning of | by escaping it. E.g.,

grep 'foo\|bar' file

Is grep an acronym? Does it mean GNU Regular Expression P?

Sunday, January 4th, 2009

grep originated from ed command: g/re/p where re is a regular expression, g stands for globally, and p stands for print. So one could say grep is an acronym of “Global Regular Expression Print“.