
awk入門
皆さん初めまして。yasakumaです。
初めての投稿になり、どんな記事にしようか結構迷いました(泣)
折角の初投稿なので、よく使うようになったコマンドを
ご紹介させていだければと思いました。
昔、別の会社でコマンドはさわる機会がありましたが、
テキスト処理はほぼ使っていなく新鮮でしたので、そちらをメインに記事にできればと思います~
それでは。
awk
これ、ものすごく使います。使えます。
コマンドの結果や、テキストの特定の列だけを抽出したい。等の目的で利用しています。
適当なファイルを準備してみてみましょう。
下記のようなファイルがあったとします。
[root@yasakuma ~] # cat akitabi tokyo takaosan 1021:sato kanagawa hakone 1021:sasaki kanagawa hiratsuka 1022:yasa chiba naritasan 1020:yasa ibaraki senbako 1021:sato gunma kusatsu 1020:sasaki saitama hanno 1021:yasa
内容は秋旅の希望アンケートで、都道府県、場所、投稿日:投稿者となっています。
ここから都道府県だけ抽出する場合
[root@yasakuma ~]
# cat akitabi | awk '{print $1}'
tokyo
kanagawa
kanagawa
chiba
ibaraki
gunma
saitama
さて、次は投稿者を抽出します。
同様に$3指定で出力すると余計な投稿日までついてきてしまいます。
[root@yasakuma ~]
# cat akitabi | awk '{print $3}'
1021:sato
1021:sasaki
1022:yasa
1020:yasa
1021:sato
1020:sasaki
1021:yasa
ここでオプション -F の登場です。
区切り文字を”:”にして、2列目を抽出させます。
[root@yasakuma ~]
# cat akitabi | awk -F ":" '{print $2}'
sato
sasaki
yasa
yasa
sato
sasaki
yasa
できました!
折角なのでカウントしてみます。(sort、unicコマンドにて)
[root@yasakuma ~]
# cat akitabi | awk -F ":" '{print $2}' | sort | uniq -c | sort -nr
3 yasa
2 sato
2 sasaki
素晴らしいですね!
誰がどれだけ投稿したか、コマンドだけで集計できてしまいました。
今回使用したファイルの代わりに、サーバーのログ等を使用して
不審な接続元や、接続数のカウントも場合によっては出来てしまいます。。。
いかがでしたでしょうか。
最初はあれだけ嫌いだったawkが今では相棒のようです。
cutやxargsといったコマンドとも相性がよく、使い方は無限大。
凄いですね、awk!
今回は時間と余白が迫っているのでこの辺で。。。






