Как удалить строки в диапазоне, соответствующем шаблону, из файла с помощью sed? [дубликат]

На этот вопрос уже есть ответ здесь:

В названии сказано все. Я пробовал несколько синтаксисов, все не получилось. Может быть, это невозможно с одним выстрелом ... Конечно, поисковые системы не помогли, ни руководство, которое трудно понять, ни команда info. У всех отсутствует пример с диапазоном предварительного выбора "вида"

0
задан 29 December 2016 в 20:23

2 ответа

В конце я нашел эту уничтожающую остроту:

sed -i '1795,$ {/PaTtErN/d}' file.log 

быть осторожным с эти -i флаг и прочитать руководство прежде, чем попробовать

2
ответ дан 7 November 2019 в 06:00

Возможный с AWK , также:

bash-4.3$ cat input.txt 
line one
and another line
running out of ideas for text
Oh, look , banana !
some more lines
this is boring
But what is not boring ? text processing !
bash-4.3$ awk 'NR<4; NR>4 && $0!~/banana/' input.txt 
line one
and another line
running out of ideas for text
some more lines
this is boring
But what is not boring ? text processing !

Идея здесь состоит в том, чтобы распечатать все строки, которые являются меньше чем 4 нетронутыми. Строки, больше, чем 4, которые не содержат определенный шаблон (в этом случае слово "банан"), будут распечатаны, и очевидно те, которые содержат его, не будет распечатан.

1
ответ дан 7 November 2019 в 06:00

Другие вопросы по тегам:

Похожие вопросы: