我有以下文件
lion : catty : mouse
lion : cat : bear
rubber: ham : cheese
我想将每行与键(=第一个字段)合并到
lion : catty : mouse ; cat : bear
rubber: ham : cheese
我已经用awk做到了这一点,但这是行不通的。
#!/usr/bin/awk -f
BEGIN {FS=":"}
a[$1]=a[$1] ";" $2 " : " $3
END{
for (x in a) print x,a[x]}
如果有一些awk jack可以告诉我我做错了,我将非常感激。 谢谢
答案 0 :(得分:3)
这可能是您想要的:
$ awk -F' *: *' -v OFS=' : ' '{a[$1] = ($1 in a ? a[$1] " ; " : "") $2 OFS $3} END{for (key in a) print key, a[key]}' file
rubber : ham : cheese
lion : catty : mouse ; cat : bear
答案 1 :(得分:2)
尝试:
$ awk -F: '{a[$1]=a[$1] (a[$1]?";":":") $2":" $3} END{for (x in a) print x,a[x]}' file
lion : catty : mouse; cat : bear
rubber : ham : cheese
如果想要更漂亮的输出,请尝试:
$ awk -F: '{a[$1]=a[$1] (a[$1]?" ; ":" : ") $2" : " $3} END{for (x in a) print x,a[x]}' file | column -t
lion : catty : mouse ; cat : bear
rubber : ham : cheese