Грепируйте линии между появлением одного и того же шаблона

Я хотел бы grep строки между одним и тем же вхождением шаблона, а затем сохранить каждую соответствующую строку в другом файле. Например, у меня есть следующее:

name aaa bbb bbb ccc name aaa1 bbb1 ccc1 name ... 

Я бы хотел

  • Как использовать строки grep, которые не начинаются с «#» или «;»?
  • Заменить маркер в текстовом файле произвольным новым текстом
  • Как выбрать наивысший элемент числа во многих файлах со многими массивами
  • Как вставить новые столбцы в CSV-файл?
  • grep неправильно читает шаблон из переменной
  • Усечение точности даты
  •  name aaa bbb bbb ccc 

    в файле1

     name aaa1 bbb1 ccc1 

    в файле 2 и т. д.

    Я пробовал с инверсией флагов в awk:

     awk '/^name/ {flag=!flag; next} flag {print}' 

    но я не понимаю, чего хочу.

    Есть ли у вас какое-либо предложение сделать это?

  • дата означает недопустимую дату
  • Объединение нескольких файлов с общим заголовком
  • Передача переменных команде sed,
  • Используйте инструменты Unix для поиска блока определений в XML.
  • Извлечь линии между двумя шаблонами
  • Как grep, включая одиночную кавычку в файле
  • 2 Solutions collect form web for “Грепируйте линии между появлением одного и того же шаблона”

    Как насчет:

     awk '/name/{n+=1}{print > "file_"n".txt"}' 

    Будет file_1.txt file_2.txt file_1.txt , file_2.txt … и т. Д.

    Вы также можете использовать «csplit» для этой цели, как в:

     csplit yourfile -s -n 1 -f file_ '%name%' '/name/' '{*}' 

    Это создаст файлы «file_1», «file_2» и т. Д.

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