1

この方法で、変数 (配列) の名前を自動補完したい:

array$1[something]++

私はこれを取得しようとしています:

array1[something]++

また

array53[something]++

Cでは、それができなかったのを覚えています..しかし、AWKではわかりません。

array'$1'[something]++

名前を自動補完します。

arraySCRIPTPARAMETER[something]++

何か案は?私が間違っている?

4

2 に答える 2

2

おそらく 2D 配列を使用して、コードを再考してください。

あなたのスニペット:

array'$1'[something]++

「偶然」および「シェルとの黙認によって」のみ機能します。起こっているに違いないのは、次のようなスクリプトがあることです (スクリプト全体にはもっと多くのことがありますが、これは重要な部分です)。

awk '/something/ { array'$1'[something]++ }'

シェルは一重引用符を削除し (awk表示されません) $1、シェル スクリプトの最初の引数に置き換えて、次のように表示awkされます。

/something/ { arrayPARAM1[something]++ }

awkスクリプトの実行中は名前が固定されていることに注意してください。これ$1は、現在の入力行の最初のフィールドではありません。

だから、それが実際に起こっていることです。より多くのコード (またはコードの目的) が利用可能でないと、代わりに何をすべきかを正確に述べることができませんが、前もって述べたように、2D 配列は、より良い解決策の明確な可能性です。後です。

于 2013-09-12T16:13:30.107 に答える