免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1844 | 回复: 7

如何删除两个关联文件中的相同内容-perl [复制链接]

论坛徽章:
0
发表于 2013-02-21 12:54 |显示全部楼层
txt1包含txt2的内容,如何删除txt1中txt2的内容,得到一个新文本。
想不明白……
文件.rar (1.21 KB, 下载次数: 6)

论坛徽章:
0
发表于 2013-02-21 14:17 |显示全部楼层
使用hash读入txt2,然后遍历txt1打印出hash中不存在的行即可

论坛徽章:
0
发表于 2013-02-21 16:30 |显示全部楼层
回复 2# kk861123


    怎么写?PERL只能限于认识额水平………………

论坛徽章:
0
发表于 2013-02-21 17:21 |显示全部楼层
回复 3# jingwu110
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. my $file1 = "D:\\1.txt";
  5. my $file2 = "D:\\2.txt";
  6. my $file3 = "D:\\3.txt";

  7. my ($in_fh1,$in_fh2,$out_fh);
  8. open $in_fh1, "<", $file1 or die $!;
  9. open $in_fh2, "<", $file2 or die $!;
  10. open $out_fh, ">", $file3 or die $!;

  11. my %hData;
  12. while (<$in_fh2>) { $hData{$_}++ };
  13. while (<$in_fh1>) {
  14.     print $out_fh $_ if not exists $hData{$_};
  15. }

  16. close for $in_fh1, $in_fh2, $out_fh;
复制代码

论坛徽章:
0
发表于 2013-02-21 17:38 |显示全部楼层
回复 1# jingwu110


    新手写的比较笨的方法
  1. use strict;
  2. use warnings;

  3. my $infile1   = '1.txt';
  4. my $infile2   = '2.txt';
  5. my $outfile   = '3.txt';

  6. open FH1, $infile1 or die $!;
  7. open FH2, $infile2 or die $!;
  8. open OH,">$outfile" or die $!;

  9. my @arr1 = <FH1>;
  10. my @arr2 = <FH2>;

  11. foreach my $line1(@arr1){
  12.         if (grep {$_ eq $line1}@arr2){
  13.                 next;
  14.         }else{
  15.            print OH "$line1";
  16.         }
  17. }

  18. close FH1;
  19. close FH2;
  20. close OH;
复制代码

论坛徽章:
0
发表于 2013-02-21 17:53 |显示全部楼层
回复 5# 天堂余韵
嗯嗯!!!谢谢


   

论坛徽章:
0
发表于 2013-02-21 18:00 |显示全部楼层
{:3_200:} 回复 6# jingwu110


   

论坛徽章:
0
发表于 2013-02-22 14:05 |显示全部楼层
本帖最后由 zhangaiyu110 于 2013-02-22 14:06 编辑

#! /usr/bin/perl -w
use strict;
use warnings;
my %name;
open (FH,'>3.txt') or die "can't open it: $!";
while(<>){
chomp;
$name{$_}=$_;
print FH $name{$_},"\n";
}
close FH;

perl.pl 1.txt 2.txt
新手发帖 求指正
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP