免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: bjkillall
打印 上一主题 下一主题

文件排重,并且计算出现次数,急,在线等 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-09-27 18:48 |只看该作者
回复 9# blackold


    楼主又回来了,现在遇到了一个问题,发现有的行里面A是这样的  “一串字符'\t'数字1'\t'数字2”  我明明想累加的是数字2可是在处理的时候处理成了数字1了,这样出现了很大的bug,请问各位如何弄啊,小弟对AWK不是很了解,拜托了~

论坛徽章:
0
12 [报告]
发表于 2010-09-27 18:51 |只看该作者
回复 2# where27


    您好,我这里又出现了一些问题,发现有的行里面A是这样的  “一串字符'\t'数字1'\t'数字2”  我明明想累加的是数字2可是在处理的时候处理成了数字1了,这样出现了很大的bug,请问如何弄啊,小弟对AWK不是很了解,拜托了~

论坛徽章:
0
13 [报告]
发表于 2010-09-27 18:51 |只看该作者
回复 8# 好看的附件


    您好,我这里又出现了一些问题,发现有的行里面A是这样的  “一串字符'\t'数字1'\t'数字2”  我明明想累加的是数字2可是在处理的时候处理成了数字1了,这样出现了很大的bug,请问如何弄啊,小弟对AWK不是很了解,拜托了~

论坛徽章:
0
14 [报告]
发表于 2010-09-27 18:58 |只看该作者
回复 12# bjkillall


    把文本和想要的结果列一下吧,不大明白你的意思

论坛徽章:
0
15 [报告]
发表于 2010-09-27 19:04 |只看该作者
回复 14# where27


我这里处理的是用户的搜索词,用户的输入什么情况都可能有,在我的文件中存储方式如下:

用户的搜索词'\t'搜索的次数  (例如:电话  07578810010       1,其中用户的搜索词是“电话  07578810010”次数是“1”)

如果文件中有如下的两行

    电话  07578810010       1
    电话  07578810010       1

那么结果应该是
  电话  07578810010       2

我最后在排完重还要按照出现的次数排个序,本来已经处理好的,可是因为这个情况弄得也处理不对了,一并向您请教了;多谢

论坛徽章:
0
16 [报告]
发表于 2010-09-27 19:11 |只看该作者
回复 14# where27


    也就是说要加的数字应该该行最后的地方,在其前面有个 '\t'   ,就是因为用户输入的很不规范,我发现在处理的时候有的词还被莫名其妙的分割了,搞不懂,请教了;

论坛徽章:
0
17 [报告]
发表于 2010-09-27 19:18 |只看该作者
回复 16# bjkillall
  1. awk '{t=$NF;$NF="";a[$0]+=t}END{for(i in a)print i,a[i]}' file
复制代码
你试试这个吧

论坛徽章:
0
18 [报告]
发表于 2010-09-27 19:28 |只看该作者
回复 17# where27


    你好,现在这个问题搞定了,还剩下排序的问题了 比如要给下面这个排序

电话  07578810010       1

实际上我要比较的是最后的那个 1 ,可是我用 sort -k2nr file 来的的话就变成了 比较 07578810010  了

现在就剩这一个问题了,谢谢您了~

论坛徽章:
0
19 [报告]
发表于 2010-09-27 19:36 |只看该作者
本帖最后由 where27 于 2010-09-27 19:38 编辑

回复 18# bjkillall
  1. awk '{t=$NF;$NF="";a[$0]+=t}END{for(i in a)print i,a[i]}' file|awk '{sub($NF,";"$NF)}1'|sort -t";" -k2nr
复制代码
你看这样行不行,如果最后的结果不想要那个分号的话
  1. awk '{t=$NF;$NF="";a[$0]+=t}END{for(i in a)print i,a[i]}' file|awk '{sub($NF,";"$NF)}1'|sort -t";" -k2nr|sed 's/;//'
复制代码

论坛徽章:
0
20 [报告]
发表于 2010-09-27 19:41 |只看该作者
回复 18# bjkillall


    就你这数据的话sort -k3nr file,列数无法确定看LS
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP