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
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.
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