如何将两个文件之间的差异结果合并到第三个文件?

用户名

我正在尝试编写一个Perl脚本,该脚本将执行以下操作:比较来自不同源目录的两个具有相同名称的文件,这意味着:

diff source_dir_1/file_1 source_dir_2/files_2

对于file_2中的每个更改的行(与file_1相比),它将在第三个文件source_dir_3 / file_3中找到来自file_1(在file_2中已更改)的行,并将此行替换为file_2中的行。

例如,用于:

文件_1:

我的名字叫Shahar
Hello World,
很高兴认识你

文件_2

我的名字叫Shahar
Goodbye World
很高兴认识

file_3:

这条线可以与
世界不同的Hello World
Nice相遇

结果file_3将是:

file_3_after_script:

这条线可以不同,
再见世界,
尼斯见面

我在编写它时遇到了问题,因为有时file_1中的一行会替换为file_2中的几行,

您对我应该如何解决此问题有任何建议吗?

磨坊主

您的目标尚不清楚。始终将您在任何关于SO的问题中尝试过的代码都包括在内。

但是,当然可以同时打开3个文件并对它们执行逻辑。

以下是我对您的目标的最佳解释。它循环遍历每个文件的行,如果file1和2不同,则从file2打印该行,否则打印file3。

use strict;
use warnings;
use autodie;

my $file1 = '...';
my $file2 = '...';
my $file3 = '...';

#open my $fh1, '<', $file1;
#open my $fh2, '<', $file2;
#open my $fh3, '<', $file3;
# Open to strings temporarily to make script self-contained:
open my $fh1, '<', \ "My name is Shahar\nHello World\nNice to meet\n";
open my $fh2, '<', \ "My name is Shahar\nGoodbye World\nNice to meet\n";
open my $fh3, '<', \ "This line can be different\nHello World\nNice to meet\n";

while (! grep eof $_, $fh1, $fh2, $fh3) {
    my $line1 = <$fh1>;
    my $line2 = <$fh2>;
    my $line3 = <$fh3>;

    print $line1 ne $line2 ? "file2: $line2" : "file3: $line3";
}

print "file3: $_" while (<$fh3>); # Print rest of file (if any)

输出:

file3: This line can be different
file2: Goodbye World
file3: Nice to meet

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

用于比较两个文件并将输出合并到第三个文件的 PowerShell 脚本

如何将两个文件的内容串联起来以构成第三个文件?

将两个不同的数据类列表合并到第三个 Kotlin

将两个不同数组的元素合并到第三个数组

如何将两个Excel工作表中的所有行合并到第三个工作表中?

如何将两个按字典顺序排列的String ArrayList合并到新的第三个ArrayList中?

如何比较两个 csv 文件中的特定列并将差异输出到第三个文件

将两个文本文件合并为第三个文件并跟踪数据

Pandas 将多个目录中的 Excel 文件合并到第三个目录中

如何将两个javascript函数与具有条件的第三个函数合并?

awk 找到两个文件的公共行并将这些行合并到第三个文件中的一行

如何比较两个Excel文件并使用Python编写第三个文件?

使用Oracle MERGE INTO将两个表中的数据合并到第三个表中

将两个指针数组合并到 C++ 中的第三个指针数组中

使用CROSS JOIN将两个表合并到现有的第三个表中-

将两个分支之间的差异合并到第三分支

如何通过一些清理操作将两个excel表的数据合并到第三个表中

读入两个文件并用合并的字符串写入第三个文件

比较两个文件的重复项并将结果发送到第三个文件

如何比较两个文件夹并将差异复制到第三个文件夹?

C ++如何将Vector的两个对象合并,合并,相交到新的第三个对象中?

如何将两个活动的两个数字相加并输出到第三个活动

合并两个csv文件,以使用两个现有csv文件中的选定行生成第三个csv文件

使用INNER JOIN将两个表合并为第三个表

将两个工作表合并成第三个

将两个csv文件与python pandas比较,并使用产生的数据框创建第三个文件

逐行比较两个文件,然后将匹配项移至第三个文件

从两个不同的文件读取并打印到第三个文件

将两个 Maven 模块合并到一个 jar 中,并让第三个模块在指定位置生成 jar