我的输入是以下排序的 CSV 文件(:
用作字段分隔符而不是通常的逗号):
version:device
1.0.0:dev1
1.0.0:dev2
1.2.3:dev3
1.3.4:dev4
1.3.4:dev5
我想聚合它,以便每个版本都在 1 行:
version:devices
1.0.0:dev1,dev2
1.2.3:dev3
1.3.4:dev4,dev5
我的输入是以下排序的 CSV 文件(:
用作字段分隔符而不是通常的逗号):
version:device
1.0.0:dev1
1.0.0:dev2
1.2.3:dev3
1.3.4:dev4
1.3.4:dev5
我想聚合它,以便每个版本都在 1 行:
version:devices
1.0.0:dev1,dev2
1.2.3:dev3
1.3.4:dev4,dev5
使用 GNU
datamash
按第一个冒号分隔的字段分组,折叠第二个字段:miller是一个非常了不起的工具:
尝试
在哪里
-F:
告诉 awk:
用作分隔符printf
不要打印换行符,除非 tol ("\n"
)awk -F: '....' file
),为了便于阅读,我将行分开。这使用两个变量来保存新行 (
nl
) 和上一个$1
的值。像这样的东西应该做你想做的事。
csvkit 的另一个解决方案: