#author(“2017-09-20T04:11:50+00:00”,“default:kazuma”,“kazuma”) Linuxコマンド

説明 [#c5dfe725]

テキストの加工やパターン処理をさせる際に利用可能なとても便利なコマンドです。

※正確にはコマンドではないそうですが、、

前から◯カラム目を抽出 [#cc45e16c]

 # cat tmp.txt
 test0 hoge  kon0
 test1 hoge1   kon1
 test2 hoge2 kon2
 test3 hoge3   kono3
 # cat tmp.txt | awk '(print $3)'
 kon0
 kon1
 kon2
 kono3

後ろから◯カラム目を抽出 [#pf09546d]

 awk '{print $(NF -0)}'
 
 例:
 # ls -l
 合計 2
 -rw-r--r-- 1 root    root    1593 12月  6 12:37 2013 LOG.txt
 -rw-r--r-- 1 root    root    1616 12月  6 12:46 2013 LOG2.txt
 
 # ls -l | awk '{print $(NF -0)}'
 LOG.txt
 LOG2.txt
 
 スクリプトとかで便利かと思うコマンドです。
 数字の所を変更することで◯カラム目を指定可能です。※例では0を指定して1カラム目。

全体から該当する文字列の行だけ抽出(grep的な使い方) [#m9f26016]

行全体 [#f3c8f9cd]

 $ cat access_log | awk '/wp-login/'

フィールド [#p4c17e04]

 $ cat access_log | awk '$5   
 /29/Jun/2016:04:04/'

特定フィールドに特定の値がある場合のみ抽出 [#ycdc6cb9]

同じ値 [#m133d6c4]

 $ cat access_log |  awk '$9==200'

以下以上 [#kb3204fe]

 $ cat access_log | awk '$5>=20'
 $ cat access_log | awk '$5<=20'

特定フィールドに特定の値がある数の合計を出力 [#p98a96ae]

 $ cat access_log | awk '$5==200' | wc -l 
 3052
 ↓
 $ cat access_log | awk '{if($9==200) ok++};END{print ok}'
 3052
 ↓
 200と200以外の値
 $ cat access_log | awk '{if($9==200) ok++;else ng++};END{print ok;print ng}'
 3052
 196