首页 > 解决方案 > 如何将带有awk的行合并到具有相同键的一行

问题描述

我有以下文件

 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 杰克能告诉我我做错了什么,我将不胜感激。谢谢

标签: awk

解决方案


这可能是您正在寻找的:

$ 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

推荐阅读