У меня есть большой файл 5000+ строк, который имеет повторяющийся рисунок, как показано ниже:печатные линии между узорами отдельных отдельными файлами
ABC
111
222
333
XYZ
ABC
444
555
666
777
XYZ
..
..
ABC
777777777
888888888
999999999
222
333
111
XYZ
Я хотел бы, чтобы извлечь содержимое между каждым «ABC» и «XYZ» и записать его в отдельный файл.
Ex: file1 должен иметь
ABC
111
222
333
XYZ
File2 должны иметь
ABC
444
555
666
777
XYZ
Filen должны иметь
ABC
777777777
888888888
999999999
222
333
111
XYZ
и так далее.
Как мы можем достичь этого? Я прочитал эти ниже потоки, но он пишет только один файл. Не помогло для моего дела.
How to select lines between two marker patterns which may occur multiple times with awk/sed
Print lines between two patterns to new file
спасибо Choroba. Я сохраню этот скрипт perl и буду использовать его позже. Спасибо за ваше время и помог мне. – bala
Красиво сделано; Я предлагаю использовать для файла дескриптор нечто иное, чем '$ {O}', потому что его легко путать с '$ {0}' (ноль). С флагом '-w' вы действительно получаете предупреждение здесь об использовании' $ i' только один раз (Perl v5.18.2); альтернативой исключению '-w' является добавление' BEGIN {$ i} '. Кроме того, учитывая, что строки открытия и закрытия диапазона ожидаются на разных линиях, лучше использовать '...', чем '..'. Правильно ли я предполагаю, что повторное использование одного и того же файла неявно закрывает ранее открытый файл ? – mklement0
@ mklement0: хорошие моменты. – choroba