我的输入数据就像
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函数一样,如上所示。任何解决方法?非常感谢
答案 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
运算符,上面将以随机顺序输出关键行,如果这是一个问题,可以轻松修复。