awk - 如何将带有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 -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
推荐阅读
- c - 不同语言的代码如何集成到同一个平台中?
- javascript - NVDA 在点击时读取按钮 aria-label,但在悬停时不读取
- ansible - Ansible - 奇怪的舍入行为
- azure - 在powershell中使用动态参数调用Azure函数
- ruby-on-rails - Rails 将自定义生成器挂钩到脚手架生成器
- vba - 在 vba 访问中添加“Private Const INTERNET_FLAG_RELOAD As Long = &H80000000”时出错
- react-native - React Native:[未处理的承诺拒绝:TypeError:null 不是对象(评估'WebRTCModule.enumerateDevices')]
- mit-scratch - 提示用户输入 30 到 100 之间的整数,按 0 退出循环,当用户按 0 时,显示消息“按空格键”
- android - Android TCP 客户端尝试连接到服务器
- postgresql - 无法连接到新的 Cloud SQL postgres 实例