awk のフィールド数 (2)

続きです。

HP-UX は手元に確認できるものがない (出社すればあるのですが、アカウントがなかったはず) ので、適当に試してみます。

以下のようなファイル (fs_test2.txt) を用意します。

1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60
1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60

これを以下のような awk スクリプトで処理します。

BEGIN {
    FS  = "|";
    OFS = "|";
}
{
    print  $1,  $2,  $3,  $4,  $5,  $6,  $7,  $8,  $9, $10,\
          $11, $12, $13, $14, $15, $16, $17, $18, $19, $20,\
          $21, $22, $23, $24, $25, $26, $27, $28, $29, $30,\
          $31, $32, $33, $34, $35, $36, $37, $38, $39, $40,\
          $41, $42, $43, $44, $45, $46, $47, $48, $49, $50,\
          $51, $52, $53, $54, $55, $56, $57, $58, $59, $60;
}

かなり強引なプログラムですが・・・。(^^;

$ gawk -f check_fs2.awk fs_test2.txt
1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60
1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60
$ nawk -f check_fs2.awk fs_test2.txt
1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60
1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60
$ mawk -f check_fs2.awk fs_test2.txt
1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60
1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60

となり、Linux では問題なさそうです。
nawk があれば nawk を用いるのが良さそうです。

以前、HP-UXawk スクリプトを作った時に何かに悩まされた記憶があるのですが、10 年以上前なので思い出せません。
Solarisawk (broken awk) と同じような振る舞いだったかもしれません。