こんにちは、さるまりんです。
今日はgrepコマンドです。
grepはファイル内の文字列検索で利用されます。
grep [検索文字列] [ファイル名]
これで複数の文字列のAND検索とOR検索する方法です。
AND検索
AND検索は結果を|(パイプ)でつなぐことで絞り込み実現します。
grep [文字列1] ファイル名 | grep [文字列2]
上記で文字列1と文字列2を含む行が抽出されます。
例えば以下のようなファイルaaa.txtがあったとします。
090-xxxx-yyyy
090-1111-aaaa
080-aaaa-1111
070-0000-bbbb
06-aaaa-bbbb
06-1111-bbbb
03-bbbb-1111
078-cccc-0000
電話番号みたいな文字列が各行に記録されています。
この中から06とaaaaの両方を含む行を抜き出すには以下のようにします。
$ grep 06 aaa.txt | grep aaaa
06-aaaa-bbbb
06とaaaaの両方を含む1行が抽出されました。
OR検索
OR検索はgrepの-eオプションを使います。
grep -e [文字列1] -e [文字列2] [ファイル名]
上記で文字列1か文字列2のいずれかか両方を含む行を抽出します。
AND検索の例で使ったファイルaaa.txtから070、080、090のいずれかを含む行を抽出してみます。
$ grep -e 070 -e 080 -e 090 aaa.txt
090-xxxx-yyyy
090-1111-aaaa
080-aaaa-1111
070-0000-bbbb
上記の4行が抽出されました。
同様のことはegrepコマンドを使っても実現できます。
検索したい文字列を|(パイプ)でつないで列挙します。
egrep '文字列1|文字列2' ファイル名
上記の例と同様のことをegrepで実行するとこうなります。
$ egrep '070|080|090' aaa.txt
090-xxxx-yyyy
090-1111-aaaa
080-aaaa-1111
070-0000-bbbb
grep(egrep)は正規表現を使ってとても便利に利用できます。
正規表現、真剣に勉強しなくては。
読んでくださってありがとうございます。
それではまた!