首页 > 解决方案 > 在linux中将行转置为列

问题描述

输入(在文件中)如下所示 -

IndexName      ColumnName
Ind1           Col1
Ind1           Col2
Ind2           Col3

现在如何使用 linux 生成以下输出,请 sed 或 awk 或其他内置函数 -

IndexName      ColumnName
Ind1           ("Col1","Col2")
Ind2           ("Col3")

谢谢 ,

标签: linuxunix

解决方案


这里有一些丑陋的 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)")"}}'

推荐阅读