다른 문자열이 앞에 오지 않는 문자열에 대한 grep


10

grep을 사용하여 인스턴스를 검색 할 수 John Smith있지만 인스턴스를 제외 할 수 Mr John Smith있습니까?

답변:


9

이것은 부정적인 lookbehind가있는 정규 표현식을 사용하여 해결할 수 있습니다 ( grep배열의 의견에서 지적한대로 실험적으로 지원됨 ).

$ grep -P '(?<!Mr )John Smith' file

지원은 실험적인 것이기 때문에 perl대신 사용할 수 있습니다 .

$ perl -nle 'print if /(?<!Mr )John Smith/' file

이는 실험적으로 지원됩니다 GREP : echo $string | grep -P '(?<!Mr )John Smith'.
정렬

실제로 @arrange. 감사합니다. 답변을 업데이트하겠습니다.
jcollado

6

당신은 실행할 수 있습니다

command | grep 'John Smith' | grep -v 'Mr John Smith'

1
좋은 생각이지만 라인에 있으면 작동하지 않습니다John Smith Mr John Smith John Smith
Ron

1

정규식을 사용하려면 ^ 및 $를 사용하십시오.

grep "^John Smith$"

^는 처음부터 일치합니다. $는 끝부터 일치합니다.

구문은 검색중인 파일에 따라 다릅니다.

sed, grep, awk ...와 함께 정규식을 사용할 수 있습니다.

bodhi@Ubuntu:~ cat file
Mr John Smith
John Smith
John
Smith

bodhi@Ubuntu:~ grep "^John Smith$" file
John Smith

OP는 문자열이 줄에있는 유일한 것을 요구하지 않습니다.
enzotib
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.