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
用作数组,它自然会生成语法错误消息,告诉您有关错误的信息。