zoomzoomzoom

解決方法の共有に主眼を置くブログ・他雑談

シェル芸(awk)

「こういうデータを持ってるんだけど、こういう風に加工したいな」という願望は、大層なプログラムを作らなくても実現できる。

 

シェル芸(ワンライナー)でデータ加工をよくしています。

シェル芸はコマンドをひたすら覚えるのではなく(覚える人もいるのかもしれませんが自分にはムーリーマン(ムーニーマン的なテンポで))、どういう風な考え方でそれを書いたのか、その書き方を採用したのかという頭の働かせ方の方が大事だと思うんです。

というわけでシェル芸の王様(と勝手に最近おもっている)awkコマンドを使う上での頭の働かせ方of mineを書きます。読んでね。

 

1.awkはパターンとアクションでできている。どちらかがあればいい。

2.まずファイル各行の情報を使って連想配列を作ってしまって、END句で一気に連想配列を使って処理するという考え方。

3.a[$1]=$2 という記述で、連想配列キーを無理矢理第一フィールドの文字に設定し、かつ代入も同時におこなう。

4.#! /usr/bin/awk -f をスクリプト作成時に書いておけば、実行時にファイル名を引数に指定できる。

5.awk整形→他コマンドで整形(sortとか)→awk整形 のように他コマンドを挟んでもよい。

6.特定の文字列の後にスペースを入れたいなら、printfの利用を考える。例)printf("%s ", $0) 

7.不要なフィールドは$1=""のように空文字で上書きするという考え方。

 

awk最高。追記あればこの記事に書きます。