I have a textfile, containing something like:
12,34 EUR
5,67 EUR
...
There is one whitespace before ‘EUR’ and I ignore 0,XX EUR.
I tried:
grep '[1-9][0-9]*,[0-9]\{2\}\sEUR' => didn't match !
grep '[1-9][0-9]*,[0-9]\{2\} EUR' => worked !
grep '[1-9][0-9]*,[0-9]\{2\}\s*EUR' => worked !
grep '[1-9][0-9]*,[0-9]\{2\}\s[E]UR' => worked !
Can somebody explain me pls, why I can’t use \s but \s* and \s[E] matched?
OS: Ubuntu 10.04, grep v2.5
This looks like a behavior difference in the handling of
\sbetween grep 2.5 and newer versions (a bug in old grep?). I confirm your result with grep 2.5.4, but all four of your greps do work when using grep 2.6.3 (Ubuntu 10.10).Note:
whereas
Probably less trouble (as
\sis not documented):My advice is to avoid using
\s… use[ \t]*or[[:space:]]or something like it instead.