grep regex zachowanie białych znaków


Mam plik tekstowy zawierający coś takiego:
12,34 EUR 
5,67 EUR
...

Przed „EUR” znajduje się jedna biała spacja i pomijam 0, XX EUR.
Próbowałem:
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 !
Czy ktoś może mi wyjaśnić, dlaczego nie mogę używać
\ s
, ale
\ s *
i
\ s [E]
to to samo?
OS: Ubuntu 10.04, grep v2.5
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jest to podobne do różnicy w zachowaniu przetwarzania
\ s
między grep 2.5 i nowszym (błąd w starym grepie?). Potwierdzam twój wynik za pomocą grepa 2.5.4, ale wszystkie cztery twoje greps działają, gdy używasz grep 2.6.3 (Ubuntu 10.10).
Uwaga:
GNU grep 2.5.4
echo "foo bar" | grep "\s"
(doesn't match)

podczas
GNU grep 2.6.3
echo "foo bar" | grep "\s"
foo bar

Prawdopodobnie mniej problematyczne (ponieważ
\ s
nie jest udokumentowane):
Both GNU greps
echo "foo bar" | grep "[[:space:]]"
foo bar

Radzę unikać używania
\ s
..., zamiast tego używaj
[\ t] *
lub
[[: space:]]
lub czego coś w tym stylu.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się