将一个2D数组名称作为参数传递给awk中的函数

时间:2012-07-20 22:20:08

标签: awk

我想将一个2D数组作为参数传递给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函数中的数组不断变化。但是我收到一条错误,指出“尝试将标量参数数组用作数组”。但是,当我通过一维数组时,它的作用相同。你能不能帮我解决这个问题

1 个答案:

答案 0 :(得分:0)

刚刚评论过,使用以下脚本测试它:

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