p=n/1000
printf "%s",arr[p];
値を確認しましたが、何も印刷されませんp
。
かなりよく出てきました。
また、次の方法で要素を印刷してみました。
printf "%s",arr[7];
これはうまくいきます。
ベストアンサー1
で述べたようにGNU Awkユーザーガイド8.2数字で配列を添字化する
配列について覚えておくべき重要な点は、配列添字は常に文字列であることです。数値が下付き文字として使用される場合、下付き文字に使用される前に文字列値に変換されます。
その場合はn
例7432
です。デフォルトでは丸めは行われませんn/1000
。7.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