У меня есть текстовый файл, содержащий что-то вроде:
12,34 EUR
5,67 EUR
...
Перед «EUR» стоит один пробел, и я игнорирую 0, XX EUR.
Я старался:
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 !
Может кто-нибудь объяснить мне, пожалуйста, почему я не могу использовать, \s
но \s*
и \s[E]
сопоставил?
ОС: Ubuntu 10.04, grep v2.5
[:space:]
, например. вот так:cat file | grep "[[:space:]]"
\s
. Я бы сказал, что его поведение «неопределенно». Вместо этого используйте [: space:], который работает, как описано в старом и новом grep.