メインコンテンツへスキップ
  1. ブログ/

【初心者向け解説】grepコマンドでAND・OR検索を行う方法

·
Linux コマンド
目次

初めに
#

Linux環境にてログ解析やテキストファイルの内容検索を行う際、grepコマンドは欠かせないコマンドとなります。

中でも、複数のキーワードを組み合わせて検索したい場合(いわゆるAND検索やOR検索)には、コマンドの構文やオプションの使い分けを正しく理解することが求められます。

本記事では、初心者の方でも理解しやすいように、grepコマンドを使用して複数条件での検索を行う方法を具体的な例とともに解説します。

grepコマンドの基本構文
#

grepコマンドの基本構文は「オプション」「検索パターン」「ファイル名」のように指定します。

grep [オプション] '検索パターン' ファイル名

例えば「maillog」にて「error」を検索したい場合のコマンドは以下となります。

grep "error" /var/log/maillog

また、grepコマンドはファイルを直接指定するだけでなく、標準出力をパイプで受け取り検索に利用することも可能です。

cat /var/log/maillog | grep "error"

grepでOR検索を行う方法(いずれかのキーワードにマッチ)
#

複数のキーワードにていずれかの「検索パターン」を含む行を抽出するには「-E」オプションを使用し拡張正規表現を有効にします。

次に正規表現を使用し「パイプ(|)」で複数の条件を繋ぎます。

grep -E "検索パターン1|検索パターン2" ファイル名

例えば「maillog」にて「error」や「fail」を含む行を検索したい場合は下記のコマンドとなります。

grep -E "error|fail" /var/log/maillog

また、同様の複数キーワードによる検索は、「-e」オプションを用いても実現可能です。

※指定するオプションは 小文字の「-e」 である点にご注意ください。
grep -e "検索パターン1" -e "検索パターン2" ファイル名

grepでAND検索を行う方法(複数の条件すべてに一致)
#

複数のキーワードすべてを含む行を検索する場合、grepをパイプで連結してフィルタリングを重ねるのが一般的となっております。

これにより「検索パターン1」と「検索パターン2」の両方にマッチする行を表示する事ができます。

grep '検索パターン1' ファイル名 | grep '検索パターン2'

例えば、maillogファイル内から「error」というキーワードと、特定の日付の両方を含む行を検索したい場合は、以下のように grep コマンドを組み合わせて使用します。

grep 'error' /var/log/maillog | grep 'Apr 23'

標準出力より検索に利用する場合は以下となります。

cat /var/log/maillog | grep 'error' | grep 'Apr 23'

関連記事

Linuxで指定した日から何日経過したか計算する方法
Linux コマンド
findコマンドで検索したファイルを削除/移動する方法
Linux コマンド
【初心者向け解説】SELinuxの状態を確認する方法
Linux SELinux セキュリティ
AlmaLinux8でruby2.6以上をインストールする方法
Linux プログラム
Linuxでディレクトリ内の容量を表示する方法
Linux プログラム
Linuxでメモリのスワップ使用率を表示する方法
Linux プログラム