awkコマンドってn番目も出力するだけだと思っていませんか?
上記の使い方はよくある使い方ですね
$ cat sample.txt
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
$ cat sample.txt | awk '{print $2}'
2
2
2
2
2
2
2
2
2
意外と知られてないのですが、awkには項目の足し算をする機能がついています
$ ls -l
total 21
-rw-r--r-- 1 tech tech 5021 4月 6日 12:53 access_log
-rw-r--r-- 1 tech tech 4871 4月 6日 09:48 access_log.1
-rw-r--r-- 1 tech tech 4922 4月 6日 09:45 access_log.2
-rw-r--r-- 1 tech tech 4502 4月 6日 09:49 access_log.3
-rw-r--r-- 1 tech tech 8475 4月 6日 09:44 access_log.4
-rw-r--r-- 1 tech tech 1005 4月 6日 09:48 error_log
-rw-r--r-- 1 tech tech 1005 4月 6日 09:48 error_log.1
-rw-r--r-- 1 tech tech 1751 4月 6日 09:45 error_log.2
-rw-r--r-- 1 tech tech 1679 4月 6日 09:49 error_log.3
-rw-r--r-- 1 tech tech 395 4月 6日 09:44 error_log.4
上記のようなログがあってアクセスログの総容量を計算したいなんて時ありますよね
こんな時にもawkが使えます
$ ls -l access* | awk '{total+=$5} END {print total}'
27791
lsでaccessから始まるファイルだけを出力して、5番目の項目と足し算して表示しています。
今後もシェルで便利なコマンドがあったら投稿していきたいと思います。
コメント