4章データ処理

元々 Awk は、ここまでの 3章で述べたような情報の抽出、データ検証、変形、要約など、日々のデータ処理を目的に開発したものだ。本章でもデータ処理という方向性は変わらないが、さらに複雑な内容に取り組む。例示するものの大半は通常の 1 行ずつの処理だが、「4.4 マルチラインレコード」では複数行にまたがる入力データの取り扱い方を述べる。

Awk プログラムは追加的に実装することが多い。プログラムの数行を書いてはテストし、さらに数行を追加しては再テストという作業を繰り返す。本書のプログラムでも、ある程度の大きさのものはそのように実装した。

もちろん古典的な手法でも Awk プログラムは開発できる。プログラムの基本設計から始め、言語マニュアルを確認しながら設計を深めて行く手法だ。しかし、既存のプログラムを目的に合わせて改造して行く方がずっと容易なことが多い。本書で例示するプログラムも、この手法の出発点となるだろう。

4.1データの変形とリダクション

データの形式変換は Awk でもっとも多い用途の 1 つだ。あるプログラムの出力を別のプログラムへ渡す際に、その形式を変換する用途だ。もう 1 つの用途に、大規模データ内の必要部分の選択がある。この場合は書式を変更したり、後の集計用に情報を付加することが多い。本節ではこれらのさまざまな例を提示する。

フィールド別の集計

ここまで、特定フィールドの値を合計する短い Awk プログラムをいくつも提示した。「2.4 データ要約」ではフィールド別に値を合計する addup プログラムを示したが、これは入力フィールドを何も検査しなかった。次に取り上げるプログラムは多少複雑になるが、やはり典型的なリダクション処理だ。すなわち、入力行にはフィールドが複数あり、フィールドはそれぞれ数値を持ち、フィールドがいくつあるかに関わらずフィールド別の合計値を求める。 ...

Get プログラミング言語AWK 第2版 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.