grep이 정확한 문자열과 일치하지 않습니다

grep이 정확한 문자열과 일치하지 않습니다

파일이 있어요

1 IF 9/1 Joe
2 IF 9/1 Marry
3 IF 9/12 Larry 
4 IF 9/15 Page

IF 9/1나는 단지 사용 되지 않는 것을 인쇄하고 싶습니다 grep. 나는 사용할 수 있다는 것을 알고 있습니다.

grep -Fvx 'IF 9/1' file.txt

그러나 어떤 이유로 인해 예상한 결과를 얻지 못했습니다.

답변1

-xgrep전체 줄이 일치하도록 합니다 . 다음을 수행해야 합니다.

grep -Fv 'IF 9/1[^[:alnum:]_]' file

답변2

문제는 이것이 9/1또한 일치할 것이라는 점이다 9/12. 따라서 다음을 사용하십시오.

grep -Fv 'IF 9/1 ' file.txt

또한 x옵션을 사용하지 마십시오. 전체 행과 정확히 일치하는 일치 항목만 선택합니다.

답변3

예, 말씀하셨지만 grep부울 awk조건이 포함된 경우 솔루션은 일반적으로 덜 신비스럽고 더 간단해 보입니다.

awk '!($2=="IF" && $3=="9/1")' file.txt

답변4

grepPCRE(Perl 호환 정규식)를 사용할 수 있습니다 .

$ grep -P 'IF 9/1(?! )' file.txt 
3 IF 9/12 Larry 
4 IF 9/15 Page

(?! )너비가 0인 부정 예측 모드로, 뒤에 공백이 없는지 확인합니다. IF 9/1즉, 뒤에 공백 이외의 문자가 하나 이상 있는지 확인합니다. 이렇게 하면 원하는 결과를 얻을 수 있습니다.

관련 정보