未定義のインデックス番号を持つBEGIN文で配列を定義したいと思います。どうすればAWKでこれを行うことができますか?AWKでBegin Statementで動的配列を定義する方法
BEGIN {send_packets_0to1 = 0;rcvd_packets_0to1=0;seqno=0;count=0; n_to_n_delay[];};
私はn_to_n_delay []に問題があります。
未定義のインデックス番号を持つBEGIN文で配列を定義したいと思います。どうすればAWKでこれを行うことができますか?AWKでBegin Statementで動的配列を定義する方法
BEGIN {send_packets_0to1 = 0;rcvd_packets_0to1=0;seqno=0;count=0; n_to_n_delay[];};
私はn_to_n_delay []に問題があります。
info gawk
は、部分的に、言う: "awkの中
配列は、表面的に他のプログラミング 言語の配列に似ていますが、根本的な違いがあります。 'awk'では、配列を使用する前に配列のサイズを指定するのに、 は必要ありません。 さらに、連続する の整数だけでなく、 'awk'の任意の数または文字列を配列インデックスとして使用できます。
他のほとんどの言語では、配列は使用前に「宣言」されている必要があります。 には、 に含まれる要素またはコンポーネントの数が含まれています。このような言語では、宣言により、メモリの連続するブロック がその多くの要素に割り当てられます。通常、インデックスは で、配列は正の整数でなければなりません。
あなたは配列として変数を「宣言」したい場合は、そのスカラーしてエラーが発生したとして、あなたはBEGIN
句でこれを含めることができ、後で誤ってそれを参照:
split("", n_to_n_delay)
空の配列を作成します。
これは、既存の配列を空にするためにも使用できます。 gawk
にはdelete
を使用できますが、AWKの他のバージョンでは使用できません。
awkで配列を定義する必要はないと思います。以下の例のように使用してください:
{
if ($1 > max)
max = $1
arr[$1] = $0
}
END {
for (x = 1; x <= max; x++)
print arr[x]
}
別に定義されていないことに注意してください。この例はThe AWK Manualから取られています。
はい、awkはハッシュマップしか持たず、宣言も必要ありません。 –
TanX Denis、それは私のための完全な情報を使用しています。 – Am1rr3zA