[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

grep interprets \s in a confusing way

From: Erik Sandberg
Subject: grep interprets \s in a confusing way
Date: Wed, 3 Jun 2009 14:49:04 +0200

When converting a regexp from a sed script into a grep basic regexp, I
kept some of the \s subexpressions (\s matches any whitespace
character in sed regexps). After reading the man page, I realised that
the meaning of the expression '\s' is undefined in grep. However,
inserting the string \s in a grep pattern gives really confusing
results, it does not even seem to be a regular expression: Sometimes
\s seems to match whitespace, sometimes it does not. Example:

(1)$ echo 'a b' |grep -G -e '^a\(\s\+\)b'
- no match
(2)$ echo 'a b' |grep -G -e '^a\(\s\+\)\?b'
- match
(3)$ echo 'a b' |grep -G -e '^ab'
- no match
(4)$ echo 'a b' |grep -G -e '^a\(x\s\+\)\?b'
- no match

If \s is a regular expression, then I don't understand how (2) matches
while (1) and (4) don't. Am I missing something?

$ grep --version
GNU grep 2.5.3


reply via email to

[Prev in Thread] Current Thread [Next in Thread]