grepコマンドを活用しよう

2018 年 9 月 14 日 by fuku

こんにちは、fukuです。

今回は、Linuxサーバのログ調査などで利用する grep コマンドについて紹介したいと思います。

grepコマンドは、ファイル内の文字列に対してキーワード検索(抽出)ができるLinuxコマンドです。
さらに、正規表現も使用できるので細かい検索も可能です。

実際のコマンドの実行結果を見ながら解説していきます。
まず、基本的な使い方として
 「指定のファイル内をキーワード検索したい」時には以下のコマンドになります。
  ——————
  # grep error ./LogFile.log
  ——————
 >実行結果は、以下のようになります。
 

 複数のキーワードを指定したいときには、パイプ(|)でつなげます。
  ——————
  # grep error ./LogFile.log |grep HTTP
  ——————
 >実行結果は、以下のようになります。
 

ちなみに、指定したキーワードを除外することもできます。
  ——————
  # grep error ./LogFile.log |grep -v TELNET
  ——————

ここからは、実際の業務で使用した構文をご紹介します。

1.コンフィグファイルやプログラムソースのコメント部分を除外したテキストに表示させたい
  >コンフィグファイルの設定値を確認したいときにコメント部分が多すぎて
   見にくいと思ったことはありませんか。
   そんなときは、以下のコマンドでコメント(#)を除外して表示してくれます。
  ——————
  # grep -v ‘^\s*#’ ./Config.cfg
  ——————
  >Config.cfgファイルの中身(コメントが複数存在)
   
  >実行結果(コメント行のみ除外されて表示)
   
   ※正規表現の「^\\s*」の解説
    ^  ・・・先頭から始まる
    \\s・・・\sが空白を意味する。\が1つ多いのは\を正規表現と認識させるため
    *  ・・・前の値が0もしくは1回以上

2.検索結果から探したい項目がファイルのどの辺(何行目)にあるのかが知りたい
  >1000行あるファイルからヒットした項目が何行目にあるか確認したい場合は、
   オプションに-nを付与すると行数が表示されます。
  ——————
  # grep -vn ‘^\s*#’ ./Config.cfg
  ——————
  

>> おまけ
 ログファイルは、ローテーション時に圧縮されていることが多いので
 grep検索しようと思っても一度解凍してから検索している方もいるかもしれません。
そんな時には圧縮ファイルも検索できる「zgrep」がお勧めです。
  ——————
  # zgrep error ./LogFile.1.gz |grep HTTP
  ——————
  ※複数のキーワード検索をするときには、通常のgrepでつなげればOKです。

今回は、コマンドでのファイル検索を中心にご紹介しましたが、
スクリプトなどでまとめると再帰的な処理も可能になります。
また、他のコマンドなどと併用することも可能なので
その辺りも次回では調べてみたいと思います。

タグ:

TrackBack