Как удалить несколько строк в каждом вхождении в файл?

Скажем, у меня есть этот файл строки 857835, содержащий такие вещи:

a1 rubbish1 rubbish2 rubbish3 rubbish4 a1 rubbish5 rubbish6 rubbish7 rubbish8 

И я хочу удалить все вхождения a1 и следующей строки ( rubbish5 и rubbish5 в этом примере). Как мне это сделать?

Я пробовал grep 'a1' -v -A1 безрезультатно, и мой sed skillz на самом деле невелик:}

На этот раз мой Google-fu не смог мне помочь, кто-то, пожалуйста, помогите!

2 Solutions collect form web for “Как удалить несколько строк в каждом вхождении в файл?”

Пытаться:

 sed -e '/^a1$/,+1d' "filename" 

Это означает, что из / ^ a1 $ / в следующую строку удалите

^ И $ гарантируют, что вы будете соответствовать всей строке, поэтому скрытый a1 не будет соответствовать.

Следующее будет работать над не-GNU sed (синтаксис ,+1 адрес – расширение GNU):

 sed -e '/^a1$/,/^/d' my_file >my_filtered_file 

«Начиная с строки, которая точно читает« a1 »и заканчивается на следующей строке, для которой существует начало строки (т.е. следующая строка), удалите».

Это гораздо менее расширяемо, чем ответ @ asoundmove, хотя, поскольку удаление другого количества строк будет иметь совершенно другой скрипт.

  • sed count lines между шаблоном - несколько файлов
  • Замените несколько строк строкой, когда номера строк хранятся в файле
  • Обработка текста. Создание файла slurm topology.conf из вывода ibnetdiscover.
  • Полосы пробелов после одиночных заглавных букв с sed
  • Использование sed для цветного вывода из команды на Solaris
  • Как удалить первую точку перед первым номером?
  • Улучшить команду sed для замены первого экземпляра символа и всех следующих символов?
  • оптимизировать команду с помощью or или pipe для анализа вывода ifconfig
  • Сценарий для извлечения выбранных записей из файла bibtex
  • Объединение двух частей вместе для создания единого сценария
  • Как изменить все строки в файле python от snake_case до camelCase в sed
  • Linux и Unix - лучшая ОС в мире.