linux - 在linux中将行转置为列
问题描述
输入(在文件中)如下所示 -
IndexName ColumnName
Ind1 Col1
Ind1 Col2
Ind2 Col3
现在如何使用 linux 生成以下输出,请 sed 或 awk 或其他内置函数 -
IndexName ColumnName
Ind1 ("Col1","Col2")
Ind2 ("Col3")
谢谢 ,
解决方案
这里有一些丑陋的 awk,我敢肯定它可以写得更优雅。此外,为了记录,这更多的是“字符串聚合”而不是“转置”。
awk -v quote='"' 'NR==1{print $0}NR>1{a[$1]=a[$1]","quote$2quote}END{for (ind in a){print ind, "("substr(a[ind], 2, length(a[ind])-1)")"}}'
推荐阅读
- qt - 将 CMake 项目导入现有 QT 项目 .pro
- postgresql - Spring Batch - 多步执行模型,如果第 3 步失败,则第 1 步和第 2 步插入的数据也应该回滚
- apache-flink - Apache Flink 中的不可序列化对象
- java - Apache POI 获取字体指标
- javascript - 来自 puppeteer 文档的代码在 UnhandledPromiseRejectionWarning 之前不起作用
- java - 如何测试副屏?
- javascript - Javascript - 在多个文件中存储类方法?
- node.js - 为什么在记录器上调用 .close() 时 winston-syslog 重新打开连接
- python-3.x - 在 Python 中不能用 pandas 读取 excel 文件删除 na
- react-native - 不变违规:TurboModuleRegistry.getEnforcing(...): 'DevSettings' 找不到