1

awk の関数に引数として 2D 配列を渡したい。私はこれを試しました

add(element1,element2,array) -> this "array" could be bigArray,smallArray etc

function add(element1,element2,array)
{
      if(!(element1 SUBSEP element2 in array))
      {
            array[element1,element2]
      }

}

add 関数の配列は変化し続けます。しかし、「スカラー パラメーター配列を配列として使用しようとしています」というエラーが表示されます。しかし、1D配列を渡すと同じことが機能します。これについて私を助けてください

4

1 に答える 1

1

今コメントしたように、次のスクリプトでテストしました。

内容script.awk

BEGIN {
    a["one", "two"] = 1;

    el1 = "one";
    el2 = "two";
    add( el1, el2, a );

    el1 = "one";
    el2 = "three";
    add( el1, el2, a );

    print "length of array: " length( a );
}

function add(element1,element2,array)
{
      if(!(element1 SUBSEP element2 in array))
      {
            printf "Elem1 -> %s\t\tElem2 ->%s\n", element1, element2
            array[element1,element2] = 2;
      }
}

次のように実行します。

awk -f script.awk

次の出力で:

Elem1 -> one            Elem2 ->three
length of array: 2
于 2012-07-20T22:32:45.777 に答える