【发布时间】:2017-06-19 02:39:50
【问题描述】:
我的输入数据是这样的
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 行
mylist=mymap[$1]声明mylist是一个标量(初始化为存储在mymap[$1]中的值),然后第 2 行alen( mylist )轮胎使用标量变量mylist作为数组,这自然会产生语法错误消息告诉你错误。
标签: awk associative-array