※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の文字列を含む行が検索から除外されているのが確認できます。
スポンサーリンク