※MACターミナル(BSD系)での動作確認です。

スポンサーリンク

-vオプションで除外する

grepに-vオプションを付けることで、指定した文字列を除外して検索することができます。

例えば、下記のin.txtがあったとします。

 $ cat in.txt 
targetfind
targetawk
targetsed
linegrep
target3

"target"を含む行を検索する場合には、下記のように実行します。

 $ grep "target" in.txt 
targetfind
targetawk
targetsed
target3

ここで、"|"でつないで、-vオプションでgrep検索から除外する文字列を指定します。
"find"の文字列を含む行を検索から除外する場合には、下記のように実行します。

 $ grep "target" in.txt | grep -v "find"
targetawk
targetsed
target3

実行すると"find"の文字列を含む行を検索から除外されているのが確認できます。

スポンサーリンク

除外文字列を-fオプションでファイル入力

除外対象文字列が多数の場合には、-fオプションで除外対象文字列をファイル入力すると便利だと思います。

-fオプションを指定する場合の記事も書いています。
参考:grepの検索パターンをリスト化してファイル入力する

例えば、下記のpattern.txtの文字列を含む行を検索から除外したいとします。

 $ cat pattern.txt 
awk
sed

下記のように、-vfオプション(-v -f オプションの組み合わせ)を指定して、pattern.txtをファイル入力します。
 $ grep "target" in.txt | grep -vf pattern.txt 
targetfind
target3

pattern.txtの文字列を含む行が検索から除外されているのが確認できます。

スポンサーリンク