输入文件
steve,apples
steve,oranges
john,pears
john,oranges
mary,bananas
steve,plums
mary,nactarines
我想得到这样的输出:
steve:apples,oranges,plums
john:pears,oranges
mary:bananas,nectarines
这是我一直试图开始工作的一个班轮:
awk -F, '{if(a[$1])a[$1]=a[$1]","$2; else a[$1]=$2;}END{for (i in a)print i ":" a[i];}' OFS=, inputfile
它给出的输出是
,orangesrs
,plumsesples
,nactariness
字符串连接a[$1]=a[$1]","$2
似乎导致数组元素的原始值在某种程度上被覆盖。如何正确执行此连接?
顺便说一下,我在Centos和Mac OSX上得到了相同的结果。
答案 0 :(得分:2)
你可以试试这个:
awk -F, '{a[$1]=(a[$1]?a[$1]FS$2:$2)} END {for (i in a) print i":"a[i]}' file
mary:bananas,nactarines
john:pears,oranges
steve:apples,oranges,plums
PS发布后,我发现这与肯特发布的相同,但没有关于为何删除的信息。