awk配列要素に数字を追加するには?

awk配列要素に数字を追加するには?

次のbash変数がある場合:

$ echo "${pos}"

201
719
744
205
354

...次のような結果が出ます...

!#bin/bash
(
    IFS=: 
    awk -v str2="$pos" -v sep="[$IFS]" '
        BEGIN {
            m = split(str2, b, sep)
            for (i=1; i<=m; ++i) {print b[i]}
        }
    '
)

-----------------
$ ./myscript.sh

201
719
744
205
354

...しかし、そうする...

(
    IFS=: 
    awk -v str2="$pos" -v sep="[$IFS]" '
        BEGIN {
            m = split(str2, b, sep)
            for (i=1; i<=m; ++i) {print b[i]+10}
        }
    '
)

------
./myscript.sh

211

...それで、アドインは機能しますが、すべての要素の結果を印刷するわけではありません。なぜできないの?

ベストアンサー1

これはIFS =:設定が正しくありません。したがって、Split()は配列を値で埋めるのではなく、str2の1つの値で埋めます。したがって、forループでb [i]を印刷しますが、実際にはstr2全体であるb [1]を一度印刷します。新しい行では配列 b のメンバを印刷すると思いますが、 Split() の retrn 値を確認すると 1 です。 IFS=: を削除すると、スクリプトは正常に機能します。

おすすめ記事