- 追加された行はこの色です。
- 削除された行はこの色です。
[[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