免费注册 查看新帖 |

Chinaunix

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

[文本处理] 去掉重复行 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-10-13 03:36 |只看该作者 |倒序浏览
大家好,我现在手边有一TXT文件,30G左右,想整行对比去掉重复格式如下:
123456----123123
123456----123456
123sdf----123123
1231明----123123
123456----123123
123456----123456
123sdf----123123
1231明----123123
123sdf----123456
1231明----123456

希望去掉重复行后变为
123456----123123
1231明----123456
1231明----123123
123456----123456
123sdf----123456
123sdf----123123

用来处理得机器分别为6G、32G内存,从1.txt读取,去重后保存为2.txt,这个shell怎么写?

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
2 [报告]
发表于 2015-10-13 08:59 |只看该作者
回复 1# blss2008

1. awk
$ awk '!a[$0]++' 1.txt > 2.txt

2. sort
$ sort -u 1.txt > 2.txt

3. database 数据库
   

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
3 [报告]
发表于 2015-10-13 12:45 |只看该作者
回复 1# blss2008


    关键在于去重之后的文件2.txt 有多大。若是和你机器的物理内存差不多大的话,还是用数据库吧,更方便,也更高效;若是去重后结果不大(例如只有几百M甚至更小,那直接用(各种语言的) hash 就可以。

论坛徽章:
0
4 [报告]
发表于 2015-10-14 18:08 |只看该作者
回复 2# jason680


   

用第一句AWK的很卡,处理个1G大小的文本,挂半天才处理600多MB

第二句SORT的,1G的文本大概10来分钟左右完,但是处理后出现乱码,不知道是不是有中文的问题。

论坛徽章:
0
5 [报告]
发表于 2015-10-14 18:09 |只看该作者
回复 3# MMMIX


   

处理后估计还有25G上下。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
6 [报告]
发表于 2015-10-14 21:17 |只看该作者
回复 5# blss2008


    上数据库。

论坛徽章:
0
7 [报告]
发表于 2015-10-15 08:29 来自手机 |只看该作者
既然是文本,
简单点,split分成30个1G的,然后sort -u 随便你玩

论坛徽章:
2
处女座
日期:2014-10-24 11:12:372015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2015-10-15 10:29 |只看该作者
学习了……如何统计重复行的个数呢

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
9 [报告]
发表于 2015-10-15 12:23 |只看该作者
回复 7# 大蚂蚁


    分割之后跨文件的重复你准备怎么弄?

论坛徽章:
0
10 [报告]
发表于 2015-10-15 14:57 |只看该作者
回复 7# 大蚂蚁


   
一开始就是分成2G的,然后去重复,发现去重复后,跨文件的重复无法处理。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP