zachowanie białych znaków regularnych grep

Mam plik tekstowy, zawierający coś w stylu:

12,34 EUR 
 5,67 EUR
 ...

Jest jedna biała SPACJA przed ' EUR ' i ignoruję 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 !

Może mi ktoś wyjaśnić dlaczego nie mogę używać \s ale \s* i \s[E] dopasowanych?

OS: Ubuntu 10.04, grep v2. 5

Author: Mark, 2010-11-20

1 answers

Wygląda to na różnicę w zachowaniu obsługi \s Pomiędzy grep 2.5 i nowszymi wersjami (błąd w starym grepie?). Potwierdzam Twój wynik z grep 2.5.4, ale wszystkie cztery Twoje grepy działają podczas korzystania z grep 2.6.3 (Ubuntu 10.10).

Uwaga:

GNU grep 2.5.4
echo "foo bar" | grep "\s"
   (doesn't match)

]}

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

Prawdopodobnie mniej kłopotów (ponieważ {[3] } nie jest udokumentowane):

Both GNU greps
echo "foo bar" | grep "[[:space:]]"
foo bar

Radzę unikać używania \s... zamiast tego użyj [ \t]* lub [[:space:]] lub czegoś podobnego.

 87
Author: Kamal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-09 06:14:30