Awk-arrays
AWK-配列
AWKには連想配列があり、それに関する最も良いことの1つは、インデックスが連続した数字のセットである必要がないことです。文字列または数値のいずれかを配列インデックスとして使用できます。 また、事前に配列のサイズを宣言する必要はありません。配列は実行時に拡大/縮小できます。
その構文は次のとおりです-
構文
array_name[index] = value
ここで、 array_name は配列の名前、 index は配列のインデックス、 value は配列の要素に割り当てる値です。
配列の作成
配列についてより深く理解するために、配列の要素を作成してアクセスしてみましょう。
例
[jerry]$ awk 'BEGIN {
fruits["mango"] = "yellow";
fruits["orange"] = "orange"
print fruits["orange"] "\n" fruits["mango"]
}'
このコードを実行すると、次の結果が得られます-
出力
orange
yellow
上記の例では、配列を fruits として宣言します。そのインデックスはフルーツ名で、値はフルーツの色です。 配列要素にアクセスするには、 array_name [index] 形式を使用します。
配列要素の削除
挿入には、代入演算子を使用しました。 同様に、 delete ステートメントを使用して、配列から要素を削除できます。 削除ステートメントの構文は次のとおりです-
構文
delete array_name[index]
次の例では、要素 orange を削除します。 したがって、コマンドは出力を表示しません。
例
[jerry]$ awk 'BEGIN {
fruits["mango"] = "yellow";
fruits["orange"] = "orange";
delete fruits["orange"];
print fruits["orange"]
}'
多次元配列
AWKは1次元配列のみをサポートします。 ただし、1次元配列自体を使用して、多次元配列を簡単にシミュレートできます。
たとえば、以下は3x3の2次元配列です-
100 200 300
400 500 600
700 800 900
上記の例では、array [0] [0]は100を格納し、array [0] [1]は200を格納します。 配列の場所[0] [0]に100を格納するには、次の構文を使用できます-
構文
array["0,0"] = 100
インデックスとして 0,0 を指定しましたが、これらは2つのインデックスではありません。 実際には、これはストリング 0,0 を持つ1つのインデックスにすぎません。
次の例は、2D配列をシミュレートします-
例
[jerry]$ awk 'BEGIN {
array["0,0"] = 100;
array["0,1"] = 200;
array["0,2"] = 300;
array["1,0"] = 400;
array["1,1"] = 500;
array["1,2"] = 600;
# print array elements
print "array[0,0] = " array["0,0"];
print "array[0,1] = " array["0,1"];
print "array[0,2] = " array["0,2"];
print "array[1,0] = " array["1,0"];
print "array[1,1] = " array["1,1"];
print "array[1,2] = " array["1,2"];
}'
このコードを実行すると、次の結果が得られます-
出力
array[0,0] = 100
array[0,1] = 200
array[0,2] = 300
array[1,0] = 400
array[1,1] = 500
array[1,2] = 600
要素/インデックスの並べ替えなど、配列に対してさまざまな操作を実行することもできます。 そのために、 assort および asorti 関数を使用できます