Ответ 1
Два способа, в зависимости от версии sed и платформы:
sed -e '/match1/,+2d' -e '/match2/,+2d' < oldfile > newfile
или
sed -e '/match1\|match2/,+2d' < oldfile > newfile
У меня есть следующая команда: sed -i -e '/match1/,+2d' filex
, которая удаляет 2 строки после поиска соответствия "match1" в файле "file x". Я хочу добавить к нему несколько совпадений, например match1, match 2....
Таким образом, он удалит 2 строки после нахождения любого из совпадений, как я могу это достичь?
Два способа, в зависимости от версии sed и платформы:
sed -e '/match1/,+2d' -e '/match2/,+2d' < oldfile > newfile
или
sed -e '/match1\|match2/,+2d' < oldfile > newfile
Не пользователь sed, но мне кажется, что вы можете использовать:
sed -i -e '/(match1|match2)/,+2d' filex
В противном случае вы могли бы, если это возможно, сделать:
sed -i -e '/match1/,+2d' filex && sed -i -e '/match2/,+2d' filex
EDIT: Похоже, у меня была правильная идея, но ziu получил ее.
Если вы правильно поняли, вы хотите
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