grep regex 공백 동작 있고 0, XX EUR는 무시합니다. 나는

다음과 같은 내용이 포함 된 텍스트 파일이 있습니다.

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 !

내가 사용하는 수없는 이유를 누군가가, pls는 저를 설명 할 수 \s있지만 \s*\s[E]일치?

운영체제 : Ubuntu 10.04, grep v2.5



답변

이것은 \sgrep 2.5와 최신 버전 (이전 grep의 버그?)을 처리 할 때의 동작 차이처럼 보입니다 . grep 2.5.4로 결과를 확인했지만 grep 2.6.3 (Ubuntu 10.10)을 사용할 때 네 가지 greps 모두 작동합니다.

노트 :

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

아마도 문제가 적을 것입니다 ( \s문서화되지 않음).

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

내 조언은 \s… 사용 [ \t]*또는 [[:space:]]또는 이와 유사한 것을 사용하지 않는 것입니다.