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
Спасибо за любую помощь!