[[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]
 $ cat access_log |  awk '$9==200'

*特定フィールドに特定の値がある数の合計を出力 [#p98a96ae]
 $ cat access_log | awk '$9==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



トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS