首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >列唯一值linux

列唯一值linux
EN

Stack Overflow用户
提问于 2014-07-07 16:50:04
回答 2查看 506关注 0票数 0

我试图弄清楚如何只根据最后一列之前的所有值来保留唯一的值,同时也保留最后一列的数据。我也想对数据进行分类。例如:

输入

非洲幅员辽阔20

印度是蓝色胶10

非洲是巨大的10

意大利在欧洲3

2014年美国15

意大利做比萨饼3

输出:

非洲幅员辽阔30

2014年美国15

印度是蓝色胶10

意大利做比萨饼3

意大利在欧洲3

我知道您可以使用排序、-n和uniq,但是我不确定我可以使用其他函数。谢谢!

EN

回答 2

Stack Overflow用户

发布于 2014-07-07 17:02:55

uniq在这里不能工作,因为它无法构建第二列的和。但是您可以使用awk

代码语言:javascript
复制
awk '{a[$1]+=$2}END{for(i in a) print i,a[i]}' input.file

您已经稍微更改了输入数据,现在需要对awk脚本进行概括。虽然上面的脚本将按第一列的值对数据进行分组,并对第二列的和进行分组,但下面的脚本将按第一列的值对数据进行分组,直到最后一列之前的一列,并计算最后一列的和:

代码语言:javascript
复制
awk 'match($0,/.* /){a[substr($0,RSTART,RLENGTH)]+=$NF}END{for(i in a)print i,a[i]}' file
票数 2
EN

Stack Overflow用户

发布于 2014-07-14 10:02:45

如果你在最后一次拒绝之前按课文排序,你应该.

代码语言:javascript
复制
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 3
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24615735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档