Linuxで役に立つかもしれないおすすめログ検索コマンド


言い訳

世間にはコマンドの数、そして引数の数が多すぎる・・・・。
こんなん、覚えとられへんでぇ・・・。

ワイのメモリは揮発性に秀でたとても優秀なメモリなんや!!

ここにはこんなことを記載しているよ

Linuxで、ログ解析用のツール等をどうしても入れることができない場面なんかで覚えておくと役に立つ各種コマンドを記載。

環境

今回、いろいろ触ってたのはCentOS7だけど、Linux系の環境ならだいたい同じことができるはず。

各種おすすめコマンド

■grep(検索)関連

 ・特定のキーワードが入った行だけ表示したい場合。


 [root@localhost ~]# grep 'キーワード' ファイル名 

 ・特定のキーワードが入った行「以外」を表示したい場合。


  [root@localhost ~]# grep -v 'キーワード' ファイル名

 ・行の「先頭」からキーワードに一致する行のみを表示したい場合。


  [root@localhost ~]# grep '^キーワード' ファイル名

 ・行の「末尾」からキーワードに一致する行のみを表示したい場合。


  [root@localhost ~]# grep 'キーワード$' ファイル名

■sort(並び替え)関連

 ・全体を、指定列の数値が小さい順に並び替えをしたい場合。

  例:2列目の数値が小さい順に行全体を並び変える。


  [root@localhost ~]# cat /.note.txt | sort -n -k2

   ※"-n"は数字順でソートするための引数。指定しない場合、アルファベット順となり、
    77が230よりも大きな数字になってしまうということ等になる。

   ※"-k"とその後ろの数字は、〇列目を指定している。並び替えの元にしたい列番号を指定する。

 ・全体を、指定列の数値が大きい順に並び替えをしたい場合。

  例:2列目の数値が大きい順に行全体を並び変える。


  [root@localhost ~]# cat /.note.txt | sort -n -k2 -r

   ※"-r"を入力することで、降順でのソートとなる。(デフォルトは昇順)
    結果が大量の場合は、"head"コマンドや"tail"コマンドの利用を推奨。


  [root@localhost ~]# cat /.note.txt | sort -n -k2 | head -3

   ※"head -"とその後ろの数字は、先頭から〇行目まで出力するということを指定している。
    上記では、先頭から3行目までを出力。


  [root@localhost ~]# cat /.note.txt | sort -n -k2 | tail -3

   ※"tail -"とその後ろの数字は、末尾から〇行目まで出力するということを指定している。
    上記では、末尾から3行目までを出力。

■awk(加工やパターン処理)関連

 awkコマンドは非常に多種多様なことが出来て、且つ難しい。なので今回は簡単なものだけ記載。

 ・特定の列だけ抜き出したい場合。(各列が"空白"で分けられている場合)


  [root@localhost ~]# awk '{print $1}' ファイル名

  ※"$"とその後ろの数字は、〇行目を抜き出すということを指定している。
   上記では1行目だけを抜き出して出力する。


  [root@localhost ~]# awk '{print $1,$2}' ファイル名

  [root@localhost ~]# awk '{print $1,$3}' ファイル名

  ※上記のように指定することで、「1行目と2行目だけ」や「1行目や3行目だけ」を
   抜き出して出力することも可能。

 ・各列が「空白」以外の記号で区切りの場合

  例: 各行が":"で分けられている場合


  [root@localhost ~]# awk -F '[:]' '[print $1}' ファイル名

  ※"-F '[ ]'"で区切り文字の指定することが可能。

 ・特定の数字以上が記載されている行のみを抜き出したい場合

  例: 2列目が50000以上の行だけ抜き出したい場合


  [root@localhost ~]# awk '$2>=50000{print}' ファイル名

  ※"$"とその後ろの数字で対象列を指定、">=50000"のように比較演算子利用可能。
    数値の比較には「< 、 > 、 <= 、 >= 、 ==、 !=」を使用できる。

 ・特定の数字以下の行だけを抜き出したい場合

  例: 2列目が30000以下の行だけを抜き出したい場合


  [root@localhost ~]# awk '$2<=30000{print}' ファイル名