Development Tip

grep regex 공백 동작

yourdevel 2020. 10. 19. 12:53
반응형

grep regex 공백 동작


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

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:]]또는 뭔가를 그와 같이 대신.

참고 URL : https://stackoverflow.com/questions/4233159/grep-regex-whitespace-behavior

반응형