Aqui está uma solução awk
do GNU:
awk '/^ *\(/{print}!/^ *\(/{split($1,aa,"[0-9]+",bb);printf "\"#%s\" )\n", bb[length(bb)]+1}'
ou idênticos, mas espalhados por algumas linhas para facilitar a leitura:
awk '/^ *\(/ { print }
!/^ *\(/ { split( $1, aa, "[0-9]+", bb )
printf "\"#%s\" )\n", bb[length(bb)]+1 }'
-
/^ *\
e !/^ *\(/
são duas regras de endereço, cobrindo linhas que começam com espaços opcionais e um parêntese aberto ... e linhas que não o fazem.
-
split( $1, aa, "[0-9]+", bb )
Para linhas que não são, divida a linha em duas matrizes. aa
é o conteúdo da linha delimitado pela regex "[0-9] +" e bb
são os delimitadores que correspondem à regex. O elemento final de bb
é o que lhe interessa.
-
printf "\"#%s\" )\n"
formata a linha de saída, aguardando uma única variável ...
-
bb[length(bb)]+1
one mais o valor do último elemento de bb.