作成日:2018-07-04, 更新日:2023-04-25
対象ファイルから対象文字列を含む行の一覧
# cat 対象ファイル | grep 対象文字列 対象ファイル
例:メールログ(/var/log/maillog)から「zebra@example.com」を含む行全部。
# cat /var/log/maillog | grep zebra@example.com /var/log/maillog
対象文字列を含む行とファイル名の一覧(grep -H)
# grep -H 対象文字列 対象ファイル
例:ログ(log20230301~/log20230331)から「zebra@example.com」を含む行全部。
# grep -H zebra@example.com log202303*
ファイル名だけ(grep -l)
# grep -l zebra@example.com log202303*
メモ: 「cat xxx | grep xxx」と「grep xxx」について
結果を見ると一緒のような気がする。catを使うメリットってあるのかな?
▼調べたら同じ疑問を抱き、その回答まであった。
「grepコマンドでのファイル指定について」
とりあえずメリットがある。でもデメリットもあるので使い分ける必要があるということが分かった
→詳しくは気にしていないので放置する
複数のファイルから対象文字列を含む行の一覧
# find 対象PATH -type f -name ファイルA -o -name ファイルB -print | xargs grep "文字列"
メモ:grep
AとBを含む
# cat 〇〇〇 | grep A | grep B
A or Bを含む
# cat 〇〇〇 | grep -E "A|B"
もしくは下記(「|」を「\」をつけてエスケープさせる)
# cat 〇〇〇 | grep "A\|B"