awkをWindowsで使う為の環境づくりを動画でYouTubeにアップロードしました。
郵便番号データ(CSV)をダウンロードして、それをawkで処理するサンプルを行なってみます。
ファイル容量で言えばいまどき大した大きさではありませんが、郵便番号データ全国版はテキストファイルで12万行以上ありますので結構なデータです。実際、一昔前のPCで、Excel等の表計算アプリに取り込むとかなり処理が重くなってしまうものです。ちなみにExcel2007よりも古いバージョンでは6万数千行までしか読み込むことが出来ません。
- BEGINでFS(フィールドセパレータ)をカンマだと定義する
- BEGINでOFS(アウトプットフィールドセパレータ)をカンマだと定義する
- 欲しい情報が含まれる列だけ表示させてみる
$1、$2、$3、という感じで左側からカンマで区切られた列を数えます。
1は、読み込むファイルの区切り文字を指定します。郵便番号データはカンマ「,」で区切られていますのでFS=”,”となります。
2.は、awkが出力する際の区切り文字を指定します。区切り文字をここで変更すれば、カンマ区切りのデータを”:”区切りにしたり、TAB区切りに加工したりと任意に指定出来ます。ここの例では同じカンマ区切りにしています。
3.は実際の処理です。$3と$7と$8をPRINTする命令を記しています。awkにはフィールド番号という概念があり、左側から$1、$2と数えます。この概念のお陰で容易にCSV形式のファイルを扱うことが出来ます。
BEGIN{ FS="," OFS="," } { print $3,$7,$8 } END{ }
参考に付け加えると、$0は行全体(1レコード)を指します。
まだソースコードうんぬんという程のことではありませんが一応記しておきます。
コメント