Para excluir o segundo test
e a linha seguinte:
$ awk '/test/ && ++f == 2 {getline;next} 1' file.txt
test
apple
mango
carrot
test
banana
gauva
Como funciona:
-
/test/ && ++f == 2 {getline;next}
Sempre que encontramos a linha correspondente à regex
test
, incrementamos a variávelf
e, sef==2
, lemos em outra linha comgetline
e, em seguida, pula para recomeçar na linhanext
. Isso tem o efeito de descartar a linhatest
e a linha a seguir. -
1
Para todas as outras linhas, imprimimos a linha. (
1
é awk taquigrafia para imprimir a linha.)
Alternar
Nesta abordagem, capturamos o número da linha da segunda ocorrência da linha correspondente test
na variável N
.
Imprimimos uma linha apenas se N
ainda não estiver atribuído ou se a linha atual tiver pelo menos duas linhas após o número da linha N
.
$ awk '/test/ && ++f == 2 {N=NR} (!N) || NR>=N+2' file.txt
test
apple
mango
carrot
test
banana
gauva