Archive for 2009

how do i grep on a term with a $ in it such as $foo? i tried enclosing it in quotes but that doesn’t help

Monday, February 16th, 2009

Enclose the $ in square brackets [ .. ], that is, specify the special character as a character class. For example,

grep ‘[$]foo’ file.txt

Negation in regular expressions

Saturday, February 14th, 2009

How to search for lines that don’t contain a particular pattern is fairly easy in some programs, obscure in others, and almost impossible yet in others. That is, assuming your program of choice supports regular expressions. I review how to achieve this functionality in Perl, Vim, grep, and vi.
(more…)

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

or

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“.