awkで配列要素を印刷する問題

awkで配列要素を印刷する問題
p=n/1000
printf "%s",arr[p];

値を確認しましたが、何も印刷されませんp
かなりよく出てきました。
また、次の方法で要素を印刷してみました。

printf "%s",arr[7];

これはうまくいきます。

ベストアンサー1

で述べたようにGNU Awkユーザーガイド8.2数字で配列を添字化する

配列について覚えておくべき重要な点は、配列添字は常に文字列であることです。数値が下付き文字として使用される場合、下付き文字に使用される前に文字列値に変換されます。

その場合はn7432です。デフォルトでは丸めは行われませんn/10007.432だから

$ awk -vn=7432 'BEGIN{arr[7] = "seven"; arr["7.432"] = "foo"; p = n/1000; print p, arr[p]}'
7.432 foo

しかし、

$ awk -vn=7432 'BEGIN{arr[7] = "seven"; arr["7.432"] = "foo"; p = int(n/1000); print p, arr[p]}'
7 seven

おすすめ記事