awk允许关联数组包含值作为数组?

时间:2017-06-19 02:39:50

标签: awk associative-array

我的输入数据就像

key1  value1
key2  value2  value3  value4
key1  value3

我的预期输出将是

key1:  value1  value3
key2:  value2  value3 value4

我正在考虑使用从键到数组的关联映射。但似乎是不允许的。我正在使用下面的实现,但总是得到错误:

function alen(a) {
    k = 0
    for(i in a) k++
    return k
}

BEGIN{}
{
    mylist=mymap[$1];
    mylist[alen( mylist )+1]=$2;   
    <==fatal: attempt to use scalar parameter `a' as an array

    mymap[$1]=mylist;
}

错误是“致命的:尝试使用标量参数`a'作为数组”,就像在“mylist”上调用alen函数一样,如上所示。任何解决方法?非常感谢

1 个答案:

答案 0 :(得分:0)

这是你要做的事情:

$ awk '{for (i=2; i<=NF; i++) arr[$1] = arr[$1] FS $i} END{for (key in arr) print key ":" arr[key]}' file
key1: value1 value3
key2: value2 value3 value4

如果没有,请编辑您的问题,以提供更清晰的解释和更好地展示您需求的示例。

由于in运算符,上面将以随机顺序输出关键行,如果这是一个问题,可以轻松修复。