免费注册 查看新帖 |

Chinaunix

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

处理两个大文本 [复制链接]

论坛徽章:
1
未羊
日期:2014-09-08 22:47:27
1 [报告]
发表于 2016-07-21 19:37 |显示全部楼层
本帖最后由 wxlfh 于 2016-07-21 19:39 编辑

按行处理,很省内存。只是两个文件都要读取两遍,算时间换内存吧
  1. use strict;

  2. my %del;

  3. open my $fh, "<", 'A.txt';
  4. while ( <$fh> ) {
  5.     chomp;
  6.     $del{$.} = 1 if /c/i;
  7. }

  8. open my $fh, "<", 'B.txt';
  9. while ( <$fh> ) {
  10.     chomp;
  11.     $del{$.} = 1 if /c/i;
  12. }

  13. open my $fh, "<", 'A.txt';
  14. open my $out,">", 'A_未删除.txt';
  15. while ( <$fh> ) {
  16.     print $out $_ unless exists $del{$.};
  17. }

  18. open my $fh, "<", 'B.txt';
  19. open my $out,">", 'B_未删除.txt';
  20. while ( <$fh> ) {
  21.     print $out $_ unless exists $del{$.};
  22. }
复制代码

论坛徽章:
1
未羊
日期:2014-09-08 22:47:27
2 [报告]
发表于 2016-07-22 18:24 |显示全部楼层
hash里存的是行号,而且存的只是要删除行的行号,内存是够的
回复 10# 清泉一边


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP