1.3 awk を用いたフィールド操作の基本

1.3.1 実行書式

gawk の基本的な実行の書式は次のとおりである。
gawk [オプション] 'awkのプログラム命令' [対象とするファイル]
この授業では,gawk の各種オプションおよびプログラム命令のうち
  1. レコード内フィールドの区切り記号を指定する -F オプション
  2. 抽出したいフィールド番号を指定して出力する print 命令
  3. そのフィールド番号記述方法($番号)
の利用法の習得は必須である。

1.3.2 出力するフィールドを変更する

第 1.2 節で紹介した最初の awk の実行例
gawk -F+ '{print $1}' /pub/db_a/data/75.60k.vocab.romaji | less
において, $1 は区切り記号+で区切られた第 1 番目のフィールドを表している。 では,$1$2$3 等に変更するとどうなるか, 試してみよう。

さらに,$番号をカンマで区切って並べれば,フィールドの出力をいろいろと変更することができる。

gawk -F+ '{print $2, $1}' /pub/db_a/data/75.60k.vocab.romaji | less

次の例も試してみよう。

gawk -F+ '{print $0}' /pub/db_a/data/75.60k.vocab.romaji | less
実行結果からわかるとおり,$0 は処理中の行全体を格納する変数である。

注意

「$番号」の間にカンマを入れると awk は列を空白で区切って出力するが, カンマを入れずに
gawk -F+ '{print $2 $1}' /pub/db_a/data/75.60k.vocab.romaji | less
とすれば,$2 と $1 の間は区切られない ($2 と $1 を結合して出力する) 2

1.3.3 入力フィールドの区切り文字指定を変更する

教材テキストでは,列(フィールド)が + で区切られているが, / を区切り文字とみなすように awk に指示してみよう。

gawk -F/ '{print $2}' /pub/db_a/data/ame | less
ここで,/pub/db_a/data/ame は, 教材テキストから ame を含む行のみを取り出したファイルである。 これと同じ中身のファイルは前回の練習問題でも ~/db13 に作成したので, 代わりにそちらを使ってもよい。

注意

フィールドの区切り文字指定 -F は awk のオプションなので, この指定は省略することもできる。 そのとき awk は(連続する)空白文字やタブ文字を列の区切りとみなす。