今回は、ファイルの文字列検索で使用するgrepコマンドで、複数の文字列を検索する方法を調べました。
複数の文字を一気にできると作業効率がうんと上がると思うのでよかったら参考にしてください。
ちなみに、2パターンのやり方で実現できます
複数文字列を検索するには、やり方が2パターンあるので順番に解説します。
厳密にいうと、パターン②は、grepコマンドではありません。
パターン①:grepコマンドのオプション(-e)を使用する
まず、一つ目は、grepコマンドのオプションを利用する方法です。
-e に、検索したい文字をくっつけていきます。
↓こんな感じです。
1 2 |
#文字列"aaa" "ccc" "eee"を検索する場合 grep -e "aaa" -e "bbb" -e "ccc" ./test.txt |
すると以下の様に出力されます。(行数を表示させたい場合は-nオプションを使用しましょう)
1 2 3 4 5 6 7 8 |
[root@test 20:21:37 work]# grep -e "aaa" -e "bbb" -e "ccc" ./test.txt aaa bbb ccc [root@test 20:26:56 work]# grep -e "aaa" -e "bbb" -e "ccc" ./test.txt -n 10:aaa 11:bbb 12:ccc |
パターン②:egrepコマンドを使用する
次のパターンは、grepコマンドではなく、egrepコマンドを使用します。
検索したい文字列を“”で囲い、「|」で文字を区切ります。
↓こんな感じ
1 2 |
#文字列"aaa" "ccc" "eee"を検索する場合 egrep "aaa|bbb|ccc" ./test.txt |
すると、以下の様に表示されます。(行数を表示させたい場合は-nオプションを使用しましょう)
1 2 3 4 5 6 7 8 |
[root@test 20:28:25 work]# egrep "aaa|bbb|ccc" ./test.txt aaa bbb ccc [root@test 20:29:54 work]# egrep "aaa|bbb|ccc" ./test.txt -n 10:aaa 11:bbb 12:ccc |
さいごに
本日お伝えした2パターンの文字数検索ですが、個人的には、grepコマンドよりもegrepコマンドの方が、検索文字列が多い場合はスリムにまとめられて便利だなーと思いました。
ただ、場面によってはgrepコマンドのeオプションを使う方がわかりやすい場面もあると思いますので、場面ごとに使い分けてみてください。
では〜〜〜
コメント