Разделить файл на две строки перед шаблоном

Это почти идентичный вопрос для разбиения файла на две части по шаблону, но вместо того, чтобы иметь строки до XYZ в file1 в примере file.txt :

 ABC EFG XYZ HIJ KNL 

Я хочу, чтобы XYZ был включен в file2 (но XYZ по-прежнему является шаблоном для разделения). Теперь я использую этот ответ: https://unix.stackexchange.com/a/202516/108861, а затем добавив последнюю строку из file1 в начало file2 и удалив ее из file1 , но есть ли более простая, линейное решение?

  • Как преобразовать файл TTA и его лист CUE в несколько файлов FLAC?
  • Надежная сегментация csv-файла, содержащего шумные данные
  • Разделить файл по количеству строк, включая заголовок в каждом из них
  • Разделить разделенный запятыми список, игнорирующий запятые в соответствии с {}
  • печать специальных символов в awk-выходе
  • Регулярное выражение ERE для разделения () между разделителем и конечным словом
  • Разделить текстовый файл на строки с фиксированным числом слов
  • TAR: лучше пропустить каталог или использовать split
  • 2 Solutions collect form web for “Разделить файл на две строки перед шаблоном”

    Очень легко изменить мое решение на другой вопрос. Просто удалите next :

     perl -ne 'if(/XYZ/){$a=1} ; $a==1 ? print STDERR : print STDOUT;' file >f1 2>f2; 

    Это создаст f1 со всем, вплоть до XYZ и f2 со всем остальным, включая XYZ .


    В качестве альтернативы, принятый ответ от связанного с вами вопроса уже делает в значительной степени то, что вам нужно. Он просто сохраняет XYZ в первом файле. Чтобы иметь его во втором, просто инвертируйте две команды awk :

     awk '/XYZ/{out="file2"}{print >out}; ' out=file1 file 

    Другой вариант (с sed )

     sed '/XYZ/,${ w file2 d }' file >file1 
    Interesting Posts

    Синхронные процессы в фоновом режиме

    Как указать тип файла в жесткой ссылке

    получить все имена файлов в подкаталогах

    Как создать загрузочный USB-сервер для Ubuntu Server?

    Какой сценарий из /etc/init.d/ начал процесс?

    Интеллектуальное переключение между несколькими процессами BASH

    Может ли ALSA выводить звук с входной линии гнезда материнской платы на HDMI?

    В чем проблема предоставления права на использование sudo vim?

    Определение путей использования автозаполнения zsh

    Греп остальной линии … после матча

    Настройка кеша LVM для очень больших файлов

    использование grep для подсчета уникальных идентификаторов с границей слов

    Установите Backtrack 5 r2 в запущенную настройку LUKS, установленную с помощью ubuntu

    Удалить первые 10 строк из нескольких файлов

    ext3 vs ext4 – тот же размер диска, менее полезное дисковое пространство под ext4 по сравнению с ext3. Зачем?

    Linux и Unix - лучшая ОС в мире.