Intereting Posts
Перезагрузите консоль SSHFS без ее удаления Где я могу найти a) мой журнал SMTP и / или b) определить / переключить, будет ли SMTP регистрироваться вообще Как ограничена видимость монстра файловой системы? печатать все после косой черты На месте модернизация массива программных RAID-массивов 5 Как заменить определенный текст на соответствующий номер строки с помощью sed? суперпользователя или пользователя? Мой жесткий диск заполнен – ​​как я могу определить, что занимает место? Измените ключ, который показывает предыдущие командные строки в ksh В bash, как отложить интерполяцию переменной, которая имеет динамическую переменную в своей строке Почему этот дескриптор apt-cache с переопределениями не работает? Расширение переменной в ssh_config Как получить доступ к одному IP-адресу с использованием разных сетевых интерфейсов Почему некоторые приложения оставляют события KeyRelease потребляемыми следующим ориентированным приложением / окном Когда Gentoo выходит из мира, он начинается с самого начала. Зачем?

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

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

a1 rubbish1 rubbish2 rubbish3 rubbish4 a1 rubbish5 rubbish6 rubbish7 rubbish8 

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

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

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

Пытаться:

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

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

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

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

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

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

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