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