免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8662 | 回复: 18
打印 上一主题 下一主题

求教: 大文本 中 按列去重 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-14 14:10 |只看该作者 |倒序浏览
问题描述:
   一个比较大的文本A,按照列去重重复行

A 内容为 :
  name1 pass1
  name2 pass2
  name1 pass3
  name4 pass4
  ......


通过一个shell 脚本,能得到
  name1 pass1
  name2 pass2
  name3 pass4




我这一般都是有 py 或 perl 的 map 来解决。
逻辑是 -- 伪代码
for line readline( file )
     key,value=line.split('\t')[0],line
     if  not  map has_key key:
         push key , value
     else :
         continue

最后    foreach key,value map : print value

但遇到的问题是 当文本够大 ,这 map 会很占内存.  而是要 bsddb 这种内存数据库,当 内存太多 就写入 文本什么的。有感觉速度不敢恭维(这 io 大文件读写入库太郁闷了)


这一直以来都没什么好办法解决,求大虾 给个方

[ 本帖最后由 liukaiyi 于 2009-7-14 14:16 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-07-14 14:17 |只看该作者

回复 #1 liukaiyi 的帖子

自己顶 , 大家 帮个忙 啊~

论坛徽章:
0
3 [报告]
发表于 2009-07-14 14:18 |只看该作者
是说name重复的就只展示第一个?

  1. awk '!a[$1]++' URFILE
复制代码

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
4 [报告]
发表于 2009-07-14 14:19 |只看该作者

回复 #1 liukaiyi 的帖子

  1. awk '!a[$1]++' urfile
复制代码


文件有多大?要求要多快?

论坛徽章:
0
5 [报告]
发表于 2009-07-14 14:20 |只看该作者

回复 #3 kwokcn 的帖子

恩 目前是这样的
当然可以 选择 更好
比如 : 使用最后一个 什么的


awk '!a[$1]++' URFILE 能说明下吗?

论坛徽章:
0
6 [报告]
发表于 2009-07-14 14:24 |只看该作者

回复 #5 liukaiyi 的帖子

使用最后一个就必须得往内存里丢更多东西了。
name第一次出现的时候a[$1]为空,!a[$1]就为真,执行默认的print,a[$1]自加为1,第二次直到第N次出现,!a[$1]均为假,无操作。
CU常见用法,可默念几遍加深记忆。

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
7 [报告]
发表于 2009-07-14 14:24 |只看该作者
直接排序呢?没有测试过。
  1. sort -uk 1,1 urfile
复制代码


LZ可以测试一下,我没有大文件。

论坛徽章:
0
8 [报告]
发表于 2009-07-14 14:25 |只看该作者
原帖由 blackold 于 2009-7-14 14:19 发表
awk '!a[$1]++' urfile

文件有多大?要求要多快?


上 10G 的样子 , 全是日志  。
速度嘛   大概给的时间 是 小1 小时

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
9 [报告]
发表于 2009-07-14 14:25 |只看该作者

回复 #8 liukaiyi 的帖子

应该没有问题。

论坛徽章:
0
10 [报告]
发表于 2009-07-14 14:27 |只看该作者

回复 #8 liukaiyi 的帖子

谢谢大家 这方法我会 都尝试下  ,运行后 时间对比
可能 过几天 给大家 了参考了

[ 本帖最后由 liukaiyi 于 2009-7-14 14:30 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP