免费注册 查看新帖 |

Chinaunix

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

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

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


    那样结果不对,而且把搜索词分成了不同的部分,还加了分号上去,显示的很乱,这个问题弄好久了,我思路已经乱了,真的是麻烦您了

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


    只分成了2部分啊,分号左边是搜索内容,分号右边是搜索的次数,然后针对搜索次数排序,有什么问题?是不是搜索的内容里也有分号?

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


    对的,有的搜索内容中也有分号,而且你那个分号的地方好像也有问题


“伤感2010高潮  2”应该分成 “伤感2010高潮;  2”而你的变成了“伤感;2010高潮  2”

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


    要排序的话,一定得用一个分隔符分隔一下搜索次数和搜索内容,并且搜索内容中不能含有这个分隔符,你看看能不能找到这样的分隔符,不然我实在没有办法排序了,看看别人有其他方法么
另外,你说的那个分号的加的地方不对,我这里没问题,你是不是看错了

论坛徽章:
0
25 [报告]
发表于 2010-09-27 20:02 |只看该作者

  1. LZ的数据是很不规则的,他的数据逻辑上是应该分成两个部分,前面是关键字,最后的数字部分是次数

  2. 关键字部分是不规则的,而他又没有特殊处理,导致分隔麻烦

  3. perl -ne '{($k,$v)=/^\s*(.*?)\s+(\d+)\s*$/; next if not $v;$a{$k}+=$v;}END{foreach $key (sort keys %a){printf "%-30s\t%-5d\n",$key,$a{$key};}}' 数据文件

复制代码

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


    因为有分号的数据是少数的我把分号替换成别的字符了,现在发现你的分号加的还是存在问题的;下面是我的命令
awk '{t=$NF;$NF="";a[$0]+=t}END{for(i in a)print i,a}' 111|awk '{sub($NF,";"$NF)}1'|sort -t";" -k2nr >./huijia.txt

111是源文件,huijia.txt是目标文件


上面是我的截图

论坛徽章:
0
27 [报告]
发表于 2010-09-27 20:14 |只看该作者
回复 25# springwind426


    我运行了你的脚本,但是发现还是不能解决问题,而且排序很杂乱,谢谢你了

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

回复 26# bjkillall
  1. awk '{t=$NF;$NF="";a[$0]+=t}END{for(i in a)print i";"a[i]}' 111|sort -t";" -k2nr
复制代码
试试这个

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


    报错了
awk '{t=$NF;$NF="";a[$0]+=t}END{for(i in a)print i";"a}' FEIFA_SINGLE.TXT|sort -t";" -k2nr >./huijia.txt
awk: (FILENAME=FEIFA_SINGLE.TXT FNR=44331) fatal: attempt to use array `a' in a scalar context
真的是谢谢您了,我都快支撑不住了,您还这么帮我

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

回复 29# bjkillall
  1. 。。。我直接拷贝你那个,应该是print i";"a[i],我已经改过来了,你再试试
复制代码
  1. awk '{t=$NF;$NF="";a[$0]+=t}END{for(i in a)print i";"a[i]}' FEIFA_SINGLE.TXT|sort -t";" -k2nr
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP