フィールドとレコード (続き)

フィールドとレコードの応用

CSV 形式の住所録データがあるとする. このデータを利用して宛名用シールを作る例を考えてみる.

次のように, よみかた, 苗字, 名前, 郵便番号, 電話番号, 住所, 勤務会社の順番でデータが並んでいる.

addr.txt

ヤマダ タロウ, 山田, 太郎, 220-0032, 09056210001, 神奈川県横浜市西区老松1-1-1, 三菱 UFJ
ヤマダ ジロウ, 山田, 次郎, 230-0033, 09056210002, 神奈川県横浜市東区日暮里2-2-2, 本田技術研
ヤマダ サンロウ, 山田, 三郎, 240-0034, 09056210003, 神奈川県横浜市北区都取り3-3-3, 東京大学
チョウ ヒ, 趙, 飛, 901-2210, 08055217890, 沖縄県宜野湾市志真志4-5-6, 琉球大学
ナカダ メグミ, 中田, 恵, 333-2213, 0102213789, 東京都葛飾区松和里6-8-2, 日本テレビ

宛名シールは:

郵便番号
住所
氏名

が記されているものにする.

フィールドをで区切るようにする

フィールドセパレータをカンマに変えてやる.

FS という変数には入力行 (レコード) をフィールドに区切るときの目印である, フィールドセパレータが入っている.

card.awk

#!/usr/local/bin/gawk -f

BEGIN{
    FS = ", "
}
{
    print "郵便番号: " $4
    print "住所: " $6
    print "名前: " $2 " " $3
}

card.awk の実行結果は:

[cactus:~/code_awk/tuts]% ./card.awk addr.txt
郵便番号: 220-0032
住所: 神奈川県横浜市西区老松1-1-1
名前: 山田 太郎
郵便番号: 230-0033
住所: 神奈川県横浜市東区日暮里2-2-2
名前: 山田 次郎
郵便番号: 240-0034
住所: 神奈川県横浜市北区都取り3-3-3
名前: 山田 三郎
郵便番号: 901-2210
住所: 沖縄県宜野湾市志真志4-5-6
名前: 趙 飛
郵便番号: 333-2213
住所: 東京都葛飾区松和里6-8-2
名前: 中田 恵

card2.awk

#!/usr/local/bin/gawk -f

BEGIN{
    FS = ", "
}
{
    print "〒: " $4
    print "住所: " $6
    print "名前: " $2 " " $3 "様"
    print ""
}

card2.awk の実行結果は:

〒: 220-0032
住所: 神奈川県横浜市西区老松1-1-1
名前: 山田 太郎様

〒: 230-0033
住所: 神奈川県横浜市東区日暮里2-2-2
名前: 山田 次郎様

〒: 240-0034
住所: 神奈川県横浜市北区都取り3-3-3
名前: 山田 三郎様

〒: 901-2210
住所: 沖縄県宜野湾市志真志4-5-6
名前: 趙 飛様

〒: 333-2213
住所: 東京都葛飾区松和里6-8-2
名前: 中田 恵様

以下のようなやりかたを実行しても大丈夫:

[cactus:~/code_awk/tuts]% gawk -f card2.awk addr.txt

Table Of Contents

Previous topic

フィールドとレコード

Next topic

awk の変数