У меня есть данные в следующем формате:Выкрутите 2 последовательных линий
#@ <id_wxyz_1>
A line written after this.
#@ <id_123>
A line written after this one also.
#@ <id_wxyz_2>
One more line.
#@ <id_yex_9>
Another line.
Теперь я хочу, чтобы удалить 2 строки: строки, содержащие «WXYZ» в # @ < ...> и его следующую строку. Пример вывод, который я хочу это:
#@ <id_123>
A line written after this one also.
#@ <id_yex_9>
Another line.
Есть некоторые команды Linux, которая также может достигнуть того же или есть какой-то эффективный способ в Python, чтобы достичь того же. Я знаю, что я могу выборочно удалять одну строку с помощью grep, sed и т. Д. Но можно ли выборочно удалить две последовательные строки с помощью команды linux
EDIT: Ответы приведены отлично, но они не работают для ввода следующий вид:
#@ <id_wxyz_1>
A line written after this.
#@ <id_wxyz_2>
A line written after this.
#@ <id_wxyz_3>
A line written after this.
#@ <id_wxyz_4>
A line written after this.
#@ <id_wxyzadded5>
A line written after this.
Для приведенного выше ввода я не должен иметь выходных строк.
EDIT снова: еще один набор входов, которые у меня есть это:
#@ <id_wxyz0>
Line 1.
#@ <id_wxyz1>
line 2.
#@ <id_wxyz2>
line 3.
#@ <id_wxyz3>
line 4.
#@ <id_6>
line 5.
Для которого выход должен быть
#@ <id_6>
line 5.
Рассмотрите также использование [GNU awk] (http://www.gnu.org/software/gawk/) ... –
Вы можете написать скрипт Perl, который сканирует каждую строку для шаблона '_wxyz_', а затем удаляет линии и следующей строки. Не существует единой команды «unix», которая может делать такую вещь. Я рекомендую Perl над утилитами, такими как sed или awk, когда дело касается нескольких строк. – zencv