ちょいとawkなんかを使ってみた
awkって、今は使ってる人はあまりいないんだろうな。
僕もそんなに使って{る,た}わけじゃないんだけど、「これだけは!」っていうのがある。
ちょいとログを調べたりするときに、便利だと思うんだ。
それは…。
僕もそんなに使って{る,た}わけじゃないんだけど、「これだけは!」っていうのがある。
ちょいとログを調べたりするときに、便利だと思うんだ。
それは…。
テキストファイルの区切り文字を指定して特定のフィールドを抜き出す方法
$ head -5 /etc/passwd | awk -F: '{print $1}' root daemon bin sys sync
- 区切り文字を -F で指定(この場合は:(コロン))
- 抜き出すフィールドを $1 で指定(この場合は1番目のフィールド)
$ cat /var/log/apache2/access.log | awk '{print $1}' | sort | uniq 127.0.0.1 192.168.1.11 192.168.1.2 192.168.1.3 192.168.1.5 :(以下略)
- フィールドセパレータ(フィールドの区切り文字)が、スペースやタブの場合は、-Fでの指定は不要。
- sortコマンドでテキストを並べ替えて、
- uniqコマンドで繰り返されているテキストを省く。
- よって、この↑例では、access.logの1番目の項目であるWebサーバへのアクセス元のIPアドレスのリストを取り出している。
ちなみに、こんな↓こともできる。
(おまけ)合計を求める
$ cat num.txt 1 2 3 4 5 6 7 8 9 10 $ awk '{SUM+=$1}END{print SUM}' num.txt 55