2012-11-06 4 views
1

grep이 "COL1, COL2, COL3"과 "COL1, COL2, COL3, COL4, COL5, COL6"이 정규 표현식으로 일치하지 않는 이유는 무엇입니까? 그것은 텍스트 편집기에서 올바르게 일치하지만 grep을 사용하지 않으면 특별한 이스케이프 나 ..가 누락 되었습니까?grep에서 정규 표현식이 작동하지 않습니다.

텍스트를 (OS X 라이온 사용) :

COL1,COL2,COL3,COL4,COL5,COL6,COL7,COL8,COL9 

명령 :

grep -E --color=auto '^([^,]*,){3}' file.csv 

그렙 버전 :
그렙 (GNU의 GREP) 2.5.1

답변

1

당신의 명령을

grep -E --color=auto '^([^,]*,){3}' file.csv  

는 다르게 COL1,COL2,COL3, 문자열을 색상하지만 출력에서 ​​해당 문자열을 원하는 경우 다음과 같은 -o 옵션을 사용합니다 :

grep -E -o '^([^,]*,){3}' 
+0

안녕, 난 충분히 아마 분명하지 않다. 문제는 예상대로 COL1, COL2, COL3과 일치하지 않지만 COL1, COL2, COL3, COL4, COL5, COL6 ...과 일치한다는 것입니다. 숭고한 편집기에서 regexp가 정확하게 일치합니다. COL1, COL2, COL3, – Tony

+0

당신의 grep 버전이 범인이라고 생각합니다. 나는'GNU grep 2.6.3'을 가지고 있으며,'COL1, COL2, COL3, '와 정확하게 일치하고 하이라이트를합니다. – anubhava

+0

정말 그 버전의 버그처럼 보입니다. 다른 greps를 시도해 보았는데 예상대로 작동합니다 ... – Tony

관련 문제