続・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までしか書いてなったというオチかもしれない。。。でも商用UNIXHP-UXなので、連休明けに出社するまで確認できないのですよ。ああ自信ない。