Подтвердить что ты не робот

Как я могу использовать "sed" для удаления 2 строк после матча/матчей?

У меня есть следующая команда: sed -i -e '/match1/,+2d' filex, которая удаляет 2 строки после поиска соответствия "match1" в файле "file x". Я хочу добавить к нему несколько совпадений, например match1, match 2....

Таким образом, он удалит 2 строки после нахождения любого из совпадений, как я могу это достичь?

4b9b3361

Ответ 1

Два способа, в зависимости от версии sed и платформы:

sed -e '/match1/,+2d' -e '/match2/,+2d' < oldfile > newfile

или

sed -e '/match1\|match2/,+2d' < oldfile > newfile

Ответ 2

Не пользователь sed, но мне кажется, что вы можете использовать:

sed -i -e '/(match1|match2)/,+2d' filex

В противном случае вы могли бы, если это возможно, сделать:

sed -i -e '/match1/,+2d' filex && sed -i -e '/match2/,+2d' filex

EDIT: Похоже, у меня была правильная идея, но ziu получил ее.

Ответ 3

Если вы правильно поняли, вы хотите

sed -e '/match1/,+2d' input.txt

Например, создайте ввод с помощью seq 10 | sed '3i match1' > input.txt:

1
2
match1
3
4
5
6
7
8
9
10

Вывод sed -e '/match1/,+2d' input.txt будет следующим:

1
2
5
6
7
8
9
10