差异2文件逐行与Perl中的正则表达式解析

时间:2013-09-16 23:59:55

标签: regex perl parsing diff line-by-line

我有两个包含多个部分的文件。 FILE2通常(但不总是)是FILE1的子集。每个文件都分解为相应的部分。我想按部分对两个文件进行区分,以查看FILE1中不在FILE2中的哪些行。每个文件也有标题绒毛需要删除。部分可以为空,FILE1中的部分标题与FILE2中的部分不同。所有部分都存在于FILE2中,但不存在于FILE1中。输出将进入FILE3

请帮助解决Perl中的解决方案。我现在这样做的方法是为每个文件创建一个2D数组,为输出的第三个文件创建一个。 2D阵列中的每一行对应于文件中的一个部分。在进行任何处理之前,我将文件完全解析到数组中,因此我不必担心在FILE2中来回移动。我迭代FILE1数组中的每一行/列表,只检查FILE2中的相应列表。如果匹配,我会在FILE1中的列表中进行迭代,如果我到FILE2的列表末尾,我会将该项添加到FILE3中的正确列表中。处理完成后,我会写FILE3。这似乎不是很优雅,所以想知道是否有一些我不知道的东西或我可以利用的任何Perl库。

示例:

=====FILE1=======
header fluff x
section 1 :
line1
line2
line3

section 2 :
line1
line4
line6

section 4 :
line7
=================

======FILE2======
header fluff y
start section 1 :
line1
line3
section 1 :

start section 2 :
line2
line4

start section 3 :
none - reason X

start section 4 :
skipped - reason Y
================

应该返回:

section 1 :
line2

section 2 :
line1
line6

section 4 :
line7

感谢您的帮助!

0 个答案:

没有答案