$ awk '!f{print} /----------------------/{f=!f;if (!f)print "Deleted up to this point"}' foo.txt
---------------------------------------------------------------------- Cap in MB
Deleted up to this point
---------------------------------------------------------------------- Cap in MB
Deleted up to this point
---------------------------------------------------------------------- Cap in MB
Deleted up to this point
Como funciona
Este script tem uma variável f
. Quando f
é verdadeiro (1), estamos em um intervalo de linhas a serem excluídas. Quando é falso (0), estamos em um intervalo que deve ser impresso.
Por padrão, f
é falso quando o programa é iniciado.
-
!f{print}
Imprima qualquer linha quando
f
for falso. -
/----------------------/{f=!f;if (!f)print "Deleted up to this point"}
Se atingirmos a linha divisória, marcada por traços, inverta o valor de
f
. Se f for falso agora, imprima a mensagem "apagada".
Atualizar
O awk padrão no Solaris parece ter problemas. Experimente:
nawk '!f{print} /----------------------/{f=!f;if (!f)print "Deleted up to this point"}' foo.txt
Ou
/usr/xpg4/bin/awk '!f{print} /----------------------/{f=!f;if (!f)print "Deleted up to this point"}' foo.txt
Ou
/usr/xpg6/bin/awk '!f{print} /----------------------/{f=!f;if (!f)print "Deleted up to this point"}' foo.txt
Resposta para a pergunta revisada
$ awk ' /^--------------------------------------------------- Cap in MB/{print "Deleted up to this point"; f=0; z=""; next;} /^---------------------------------------------------------------------- Cap in MB/{f=1; if(z)print substr(z,2); z=""; print;next;} f{z=z"\n"$0;next;} END{print substr(z,2);}' foo.txt
---------------------------------------------------------------------- Cap in MB
Deleted up to this point
---------------------------------------------------------------------- Cap in MB
Deleted up to this point
---------------------------------------------------------------------- Cap in MB
Deleted up to this point
---------------------------------------------------------------------- Cap in MB
line 2
line 3
line 4
line 5
---------------------------------------------------------------------- Cap in MB
line 2
line 3
line 4
line 5