从命令行处理数据透视表

Sir*_*Vic 2 awk text-processing

我有这个数据:

300>BRIAN
100>DANY
200>NICOLE
105>DANY
Run Code Online (Sandbox Code Playgroud)

我想生成以下内容:

300>BRIAN
205>DANY
200>NICOLE
Run Code Online (Sandbox Code Playgroud)

分隔符是>,第一列应该是 SUM。

ste*_*ver 7

强制性GNU Datamash解决方案

datamash -st '>' groupby 2 sum 1 < data | datamash -t '>' reverse
300>BRIAN
205>DANY
200>NICOLE
Run Code Online (Sandbox Code Playgroud)


αғs*_*нιη 6

使用 awk:

awk -F\> '{pivot[$2]+=$1} END{for (x in pivot) print pivot[x]">"x}' infile.txt
Run Code Online (Sandbox Code Playgroud)

输出是:

300>BRIAN
205>DANY
200>NICOLE
Run Code Online (Sandbox Code Playgroud)

解释:

对于column2中的每个uniqe字段求和其相对第一列值,然后在最后循环枢轴数组并首先打印总和,然后打印相应的字符串。