Linux環境上でログ検索に便利なgrepを用いた検索方法について、ご紹介していきます。
grepコマンドは、指定したファイル名の中から検索パターンと一致する行を出力するコマンドです。
【基本構文】
$) grep [オプション] <検索パターン> <ファイル名>
以下のオプションをつけるとより詳細な検索が可能となります。
-n…マッチした行番号の出力
-i…大文字、小文字を区別しない
-v…パターンマッチした行以外を出力する
-w…パターンを単語としてマッチ
-E…正規表現の拡張
[grep A B.txt]と入力すると、文字列AをBテキストファイルから検索することができます。しかし、ログファイルなどを検索する際には、メッセージ内容やタイムスタンプが完全一致せず、検索できない場合があります。検索したい文字列の一部分が不明場合は、正規表現を利用して検索することが可能となります。
grepで利用可能な主な正規表現
. …任意の1文字
* …直前の1文字(1パターン)の0回以上の繰り返し
^ …行の先頭
$ …行の末尾
[a-z]…a-zまでの1文字
[1-9]…1-9までの1文字
? …直前の文字が0または1回の繰り返し
{m,n}…直前の文字がm回以上(n回以下)の繰り返し
(AAA)…()内を単語として検索
\\ …正規表現を文字列として扱う。(エスケープ)
「A.logファイル」から「…error」のようなエラー出力を検索したい場合
$) grep -E '.*error' A.log
「A.logファイル」から「…20210806 msg…」のようなタイムスタンプ付きのログを8/1~8/6まで出力したい場合
$) grep -E '080[1-6](.*)msg' A.log
grepコマンドを用いたログ検索は、実務で多く使われることが多いかと思います。正規表現が使いこなせるようになれば、より高度なログ分析が行えるようになるので、ぜひ正規表現について学んでみてはいかがでしょうか。