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

(?! )幅がゼロの否定予測モードで、後にスペースがないことを確認します。IF 9/1つまり、後にスペース以外の文字が1つ以上あることを確認します。これにより、目的の結果が得られます。

関連情報