1

我想将二维数组作为参数传递给 awk 中的函数。我试过这个

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 函数中的数组不断变化。但是我收到一条错误消息,指出“尝试将标量参数数组用作数组”。但是当我传递一个一维数组时,同样的事情。你能帮我解决这个问题吗

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 回答