Linuxコマンド

説明

テキストの加工やパターン処理をさせる際に利用可能なとても便利なコマンドです。
※正確にはコマンドではないそうですが、、

前から◯カラム目を抽出

# 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

後ろから◯カラム目を抽出

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的な使い方)

行全体

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

フィールド

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

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

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

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

$ 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