Diff 2 файлы построчно с парсингом регулярных выражений в Perl

У меня есть два файла с несколькими разделами. FILE2 обычно, но не всегда, подмножество FILE1, Каждый файл разбит на соответствующие разделы. Я хотел бы развести два файла по разделам, чтобы увидеть, какие строки находятся в FILE1 которые не в FILE2, Каждый файл также имеет пух заголовка, который необходимо удалить. Разделы могут быть пустыми, а заголовок разделов в FILE1 отличается от FILE2, Все разделы существуют в FILE2 но не в FILE1, Выход будет идти в FILE3,

Пожалуйста, помогите с решением в Perl. Я делаю это прямо сейчас, я делаю 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 ответов

Другие вопросы по тегам