我试图弄清楚如何只根据最后一列之前的所有值来保留唯一的值,同时也保留最后一列的数据。我也想对数据进行分类。例如:
输入
非洲幅员辽阔20
印度是蓝色胶10
非洲是巨大的10
意大利在欧洲3
2014年美国15
意大利做比萨饼3
输出:
非洲幅员辽阔30
2014年美国15
印度是蓝色胶10
意大利做比萨饼3
意大利在欧洲3
我知道您可以使用排序、-n和uniq,但是我不确定我可以使用其他函数。谢谢!
发布于 2014-07-07 17:02:55
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发布于 2014-07-14 10:02:45
如果你在最后一次拒绝之前按课文排序,你应该.
sed 's/\( [0-9]*$\)/,\1/' 1 |sort -t"," -k1,1 -u |sed 's/,//'
Africa is huge 20
America 2014 15
India is blue glue 10
Italy is in europe 3
Italy makes pizza 3https://stackoverflow.com/questions/24615735
复制相似问题