Awk-arrays

提供:Dev Guides
移動先:案内検索

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 関数を使用できます