我试图弄清楚如何根据最后一列之前的所有值只保留唯一值,但也保留最后一列数据。我也想对数据进行排序。例如:
输入
非洲很大 20
印正蓝胶10
非洲很大10
意大利在欧洲3
美国2014 15
意大利制作披萨 3
输出:
非洲很大 30
美国2014 15
印正蓝胶10
意大利做披萨3
意大利在欧洲 3
我知道您可以使用 sort -n 和 uniq,但我不确定我可以使用的其他功能。谢谢!
最佳答案
uniq
在这里不起作用,因为它无法构建第二列的总和。但是您可以为此使用 awk
:
awk '{a[$1]+=$2}END{for(i in a) print i,a[i]}' input.file
您已经稍微更改了输入数据,现在需要对 awk 脚本进行通用化。上面的脚本将根据第一列的值对数据进行分组并对第二列求和,而下面的脚本将根据第一列的值对数据进行分组,直到最后一列并计算最后列的总和:
awk 'match($0,/.* /){a[substr($0,RSTART,RLENGTH)]+=$NF}END{for(i in a)print i,a[i]}' file
关于linux - 列唯一值 linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24615735/