我有两个包含多个部分的文件。 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
感谢您的帮助!