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

awk是否允许关联数组包含值作为数组?,awk,associative-array,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{} {

我的输入数据如下

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;
}
函数alen(a){
k=0
为了(我在a)k++
返回k
}
开始{}
{
mylist=mymap[$1];
mylist[alen(mylist)+1]=2美元;

这就是你想要做的:

$ 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

$awk'{for(i=2;i解决什么问题?第1行
mylist=mymap[$1]
说明
mylist
是一个标量(初始化为
mymap[$1]
中存储的值),然后第2行
alen(mylist)
将标量变量
mylist
用作数组,它自然会生成语法错误消息,告诉您有关错误的信息。