#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