Chinaunix
标题:
我想合并前面相同的列,并把最后一列的值相加
[打印本页]
作者:
hxletter
时间:
2013-10-17 21:39
标题:
我想合并前面相同的列,并把最后一列的值相加
本帖最后由 hxletter 于 2013-10-17 21:43 编辑
例如我有如下文件:
a b c :3
b c d :2
a b c :1
b c d :3
复制代码
我想得到:
a b c :4
b c d :5
复制代码
作者:
liion631818
时间:
2013-10-17 22:29
估计这样的帖子都烂了,大家都没兴趣回答
awk -F":" '!/^$/{a[$1]+=$2}END{for(i in a)print i":"a[i]}'
复制代码
作者:
yaozhibing41001
时间:
2013-10-17 23:02
回复
1#
hxletter
[root@localhost ~]# awk -vFS=":" '{a[$1]+=$2}END{for(i in a){print i":"a[i]}}' a
b c d :5
a b c :4
复制代码
作者:
WilliBhamlll
时间:
2013-10-17 23:27
awk '{sub(":","");t=$NF;NF--;a[$0]+=t;}END{for(i in a)print i" :"a[i]}' file
复制代码
作者:
rubyish
时间:
2013-10-18 06:16
学 习 了 !
作者:
yestreenstars
时间:
2013-10-18 09:01
本帖最后由 yestreenstars 于 2013-10-18 09:03 编辑
[root@localhost ~]# cat i
a b c :3
b c d :2
a b c :1
b c d :3
[root@localhost ~]# awk -F: '{a[$1]+=$2}END{for(i in a)print i":"a[i]}' i
b c d :5
a b c :4
[root@localhost ~]# awk -F: '{if(!a[$1]++)b[++n]=$1;c[$1]+=$2}END{for(i=1;i<=n;i++)print b[i]":"c[b[i]]}' i
a b c :4
b c d :5
[root@localhost ~]#
复制代码
作者:
bikong0411
时间:
2013-10-18 09:29
awk -F':' '{a[$1]+=$2;}END{for(i in a){print i FS a[i]}}' urfile
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2