続・awkコマンドのフィールド数
いい加減な情報にツッコミのトラックバックを頂いた。ありがとうございます。
どういう検証しているかにもよるかもしれませんが、それは少なすぎるような気がします。
http://d.hatena.ne.jp/Rocco/20071006/p9
試したコードは以下のような感じ。
awk -F"|" '{print $1,$2,$3,(途中略),$59,$60}' input.dat
input.datの中身は、
1|2|3|4|5|(途中略)|59|60 1|2|3|4|5|(途中略)|59|60
という2レコードのファイルだったと思う。その標準出力の結果が
1|2|3|4|5|(途中略)|29|30 1|2|3|4|5|(途中略)|29|30
だった(はず)。確かに自分でも以下のような点が納得いかなかった。
- 最大30では実用性に欠ける制限(『プログラミング言語AWK』って本があるくらいの汎用コマンドなのに。)GNUだとこの手の制限がないようにコード書けみたいな規約があったはず。
- 30ってコンピュータ的にキリの良い数字じゃない。
- HP-UXのマニュアルには199とある。(あれ、これもキリの良い数字じゃないなぁ)
awk は、レコード当たり最大 199 個までのフィールド ($1 、 $2 、...、 $199) をサポートします。
http://docs.hp.com/ja/B2355-90850/awk.1.html
案外アクション部分のprint以下に$30までしか書いてなったというオチかもしれない。。。でも商用UNIXのHP-UXなので、連休明けに出社するまで確認できないのですよ。ああ自信ない。