grep(+その他のコマンド)でor検索、and検索を行う場合、以下のようにすればよい。

or検索を行う

or検索は簡単で、「-e」オプションを使うことで複数条件での検索が可能だ。

grep -e 'キーワード1' -e 'キーワード2' ファイルPATH

その他、以下のようにパイプでつなげてやることでor検索が行える。

grep "キーワード1\|キーワード2" ファイルPATH
grep -E "キーワード1|キーワード2" ファイルPATH
egrep "キーワード1|キーワード2" ファイルPATH

その他、awkやsedを使うことでも同様の結果を得ることができる。

awk '/キーワード1|キーワード2/' ファイルPATH
sed -e '/キーワード1/b' -e '/キーワード2/b' -e d ファイルPATH

and検索を行う

and検索を行う場合は、パイプでgrepを2重に実行するのが簡単だ。

grep 'キーワード1' | grep 'キーワード2' ファイルPATH

一応、or検索と同じように正規表現等を使ってand検索を行うことも可能だが、対象となるキーワードが増えると苦しくなってくる。

grep -E "キーワード1*キーワード2" ファイルPATH # キーワードの特定の順番のみを検索
grep -E "キーワード1*キーワード2|キーワード2*キーワード1" ファイルPATH # キーワードの順番を問わず検索

その他、awkやsedでは以下のように検索する。

awk '/キーワード1.*キーワード2/' ファイルPATH # キーワードの特定の順番のみを検索
awk '/キーワード1/ && /キーワード2/' ファイルPATH # キーワードの順番を問わず検索
sed '/キーワード1.*キーワード2/!d' ファイルPATH # キーワードの特定の順番のみを検索
sed '/キーワード1/!d; /キーワード2/!d' ファイルPATH # キーワードの順番を問わず検索

not検索を行う

grepでnot検索を行う場合は、「-v」オプションを用いることで対応できる。

grep -v 'キーワード' ファイルPATH

複数のキーワードを除外する場合は、「-e」オプションと組み合わせる。

grep -v -e 'キーワード1' -e 'キーワード2' ファイルPATH

その他、awkやgrepで以下のようにしても同様の効果が得られる。

awk '!/キーワード/' ファイルPATH
sed -n '/キーワード/!p' ファイルPATH