Use este awk :
awk '/CARTESIAN COORDINATES \(A.U.\)/{a=1;next} a==1&&/NO LB/{b=1;next} $0==""{exit}
a==1&&b==1{c[$2]++} END{for(i in c){printf "%s%s", i,c[i]}}' file
-
/CARTESIAN COORDINATES \(A.U.\)/{a=1;next}: Este bloco pesquisa porCARTESIAN COORDINATES (A.U.)e, em seguida, define a variávelapara1,nextsignifica saltar para a próxima linha e iniciar o processamento novamente com essa linha. -
a==1&&/NO LB/{b=1;next}verifica seaé1e se a segunda stringNO LBé encontrada em algum lugar na linha. Ele define a variávelbe, em seguida, carrega a linhanext. -
$0==""{exit}: Então, se a linha estiver vazia, saia do processamento (salta para o blocoEND{}). -
a==1&&b==1{c[$2]++}: Se ambas as correspondências forem encontradas (aebequal1), incremente uma matriz chamadaccom índice$2(campo 2). Isso contará as ocorrências de cada valor no segundo campo. -
END{...}: Isso será executado quando o processamento do arquivo estiver concluído (a matriz está preenchida).-
for(i in c)é executado por cada elemento na matriz ... -
printf "%s%s", i,c[i]: ... e imprima o índice e o valor.
-
A saída (com o seu arquivo de exemplo):
C5H2