perl - 如何比较两个文本文件并删除匹配的内容并传递到 perl 中的输出?

标签 perl file compare

我有两个文本文件text1.txt和text2.txt,如下所示

文本1

    ac
    abc
    abcd
    abcde

文本2

    ab
    abc
    acd
    abcd

输出

ac
abcde

我需要比较这两个文件,并在第二个文件中存在匹配项时从 text1 中删除内容。

我想要 Perl 语言的代码。目前我正在尝试以下代码。

#!usr/bin/perl
use strict;
use warnings;

open (GEN, "text1.txt") || die ("cannot open general.txt");
open (SEA, "text2.txt") || die ("cannot open search.txt");
open (OUT,">> output.txt") || die ("cannot open intflist.txt");
open (LOG, ">> logfile.txt");

undef $/;
foreach (<GEN>) {

  my $gen = $_;
  chomp ($gen);
  print LOG $gen;

  foreach (<SEA>) {

    my $sea = $_;
    chomp($sea);
    print LOG $sea;

    if($gen ne $sea) {
      print OUT $gen;
    }
  }
}

在此,我从 text1 获取所有内容,而不是不匹配的内容。请帮帮我。

最佳答案

我认为您应该读取数组中的 text2,然后在该数组的第二个 foreach 中使用该数组。

@b = <SEA>;

否则在第二个循环中文件指针将已经位于末尾

关于perl - 如何比较两个文本文件并删除匹配的内容并传递到 perl 中的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14723333/

相关文章:

perl - 有什么可靠的方法来对文件列进行排序吗?

c# - 获取除 .zip 之外的所有文件

javascript - 比较javascript中的多维数组

android - 比较android中的2个ImageView

c - 尝试使用字符串比较来比较时间

Perl 警告 : "Found = in conditional, should be ==", 但行上没有等号

perl - 打印: producing no output

PERL Email::Send::Gmail 无法连接到 Windows 7 上的 Gmail 帐户

PHP : How can I read an . XLS 文件的内容没有保存到服务器?

java - 我正在尝试制作一个程序,将对象保存到文件中,然后从文件中读取对象。我究竟做错了什么?