# print lines from /energy/ to /total/, not inclusive
awk '/total/{p=0};p;/energy/{p=1}' /path/to/input
Isso definirá somente awk
set p
para 1 quando /energy/
for visto e defina p
para 0 quando /total/
for visto. O p
(a condição que desencadeia a impressão das linhas) será então 1
nas linhas que você deseja imprimir.
Isso pode ser refinado para imprimir exatamente os dados desejados:
$ awk '/total/{p=0} p==1 {print $1,$2} /energy/{p=1}' input
0.0000E+00 0.00000E+00
1.0000E-05 1.10650E-06
1.0000E-03 1.15086E-04
1.0000E-01 8.12322E-03
1.9231E-01 3.65758E-03
2.5000E+00 0.00000E+00
Para imprimir também o segundo campo quando vir /1tally/
, basta adicionar um acionador específico:
$ awk '/1tally/ {print $2} /total/{p=0} p==1 {print $1,$2} /energy/{p=1}' input
8
0.0000E+00 0.00000E+00
1.0000E-05 1.10650E-06
1.0000E-03 1.15086E-04
1.0000E-01 8.12322E-03
1.9231E-01 3.65758E-03
2.5000E+00 0.00000E+00
Para colocar uma linha em branco entre cada bloco de bloco, use /total/{p=0; print ""}