免费注册 查看新帖 |

Chinaunix

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

求救,linux下超过20G的文本文件的编辑统计 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-06-06 03:32 |只看该作者 |倒序浏览
有几个超过20G的文本文件,需要用sort -u来去掉重复的行,命令如下:
sort -u 1.log > 2.log
今天执行了超过8个小时,2.log依然没有任何数据写入。换了其他的方式:
cat 1.log | sort -u > 2.log
cat 1.log | sort | uniq > 2.log
均得不到数据,我用nohup来执行的,现在还没有结束。
我不太清楚sort的运行机制,我在2.log中得不到数据,是不是因为sort需要把所有文本都完全读入内存进行操作完之后才会往新文件中写入?这个我不太懂。
曾想过将文件切割之后再用sort -u,但是这样的结果不精确,分割的小文本互相之间还是会有重复行。

没招了,只好来CU求救。。。

还没休息的哥们帮帮忙,明晨8点我就要把结果统计出来了,给支支招吧,谢谢!

论坛徽章:
5
寅虎
日期:2015-01-20 09:16:52亥猪
日期:2015-01-21 14:43:44IT运维版块每日发帖之星
日期:2015-12-17 06:20:00每日论坛发贴之星
日期:2015-12-17 06:20:00每周论坛发贴之星
日期:2015-12-20 22:22:00
2 [报告]
发表于 2010-06-06 08:55 |只看该作者
太大了不能用sort,会超过内存限制的..

http://bbs.chinaunix.net/redirec ... 21&pid=10435075

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
3 [报告]
发表于 2010-06-06 09:27 |只看该作者
{:3_179:} 20G,太大了.

论坛徽章:
0
4 [报告]
发表于 2010-06-06 09:40 |只看该作者
split

论坛徽章:
0
5 [报告]
发表于 2010-06-06 19:03 |只看该作者
各位的思路是先split切割成小文本,然后再个个sort -u,然后在合并到一起再sort -u一次?
这样会不会效率太低了啊

论坛徽章:
0
6 [报告]
发表于 2010-06-06 19:32 |只看该作者
试试按首字母或者类似规则切分文件后逐个消除重复行再合并,

论坛徽章:
0
7 [报告]
发表于 2010-06-07 09:01 |只看该作者
用C的代码不知道能不能处理...

论坛徽章:
0
8 [报告]
发表于 2010-06-09 11:59 |只看该作者
太牛了吧。

兰州wc -l可否?有上亿行了吧。导入数据库试试?

论坛徽章:
0
9 [报告]
发表于 2010-06-09 13:35 |只看该作者
我个人觉得是因为这些命令是把数据读到内存去操作。
最好通过写个脚本来操作,一点一点儿的操作,应该是没有问题的。

论坛徽章:
0
10 [报告]
发表于 2010-06-10 15:42 |只看该作者
我觉得很难的。
无论在时间上还是在空间上。
从时间上来说,如果你有1000行文字,则第一行要和其后的999行比较……对于你的20G的文件来说,这个比较的次数是个天文数字。
从空间上来说,广是把你的文件整个读入内存都完成不了。
我不知道你判断两行相同的标准是什么,如果每行都有若干个field,然后只要id之类的field相同,则判断两行为重复,那么你可以试试借助数据库来完成。
如果是纯文本,而且重复的行会很多的话,我建议你分步完成。20G的文件分成40份,然后每两个文件合并成一个文件,再将得到的结果进行合并……直到最后得到一个文件。
如果重复的行并不多,那实在没有什么好办法。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP