1

Как найти третье вхождение шаблона в файле (Примечание: не в строке) и удалить строку, содержащую шаблон и n строк под ним (скажем, 5 строк ниже).

например,

COVER
fafjasfj
isfapifj
ajfsdaijf
COVER
oaijfeiahf
aasdf
fafadf
df
This is a COVER                                             *
efjafa                                                      *
aifaidfj                                                    *
aifhaidfh                                                   *
idfhaifh                                                    *
aidfhiadhf                                                  *
aifhaifh
iafaishf
jgsjg
fbsfgbf

Я хочу удалить всю строку, содержащую третье вхождение шаблона COVER и пять строк под ним. Эти строки обозначены * s. (Примечание: * s не являются частью файла.

1 ответ1

1
$ awk '$1=="COVER"{l++}l==3{l2++} l!=3 || l2>6' file
COVER
fafjasfj
isfapifj
ajfsdaijf
COVER
oaijfeiahf
aasdf
fafadf
df
aifhaifh
iafaishf
jgsjg
fbsfgbf

Последний оператор {print} не является необходимым, потому что по умолчанию awk выводит текущую строку в истинном состоянии.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .