A linha em movimento é mais facilmente feita com POSIX ex
; O incremento numérico é mais facilmente feito com awk
. Felizmente, ex
permite filtrar linhas específicas por meio de ferramentas externas:
printf %s\n 'g/description/m-2' 'g/param id/.!awk "++\$NF"' x | ex file
Traduzido para o inglês, o primeiro comando é "Mover todas as linhas que contenham a palavra 'descrição' uma linha."
(Há um 2 lá porque, mais literalmente traduzido, é "Mova essas linhas para o ponto logo após as linhas de duas linhas para cima.")
O segundo é: "Filtre cada linha que contém 'param id' até awk
."
O comando awk
é "Incrementar o campo final da linha (e imprimir a linha, a menos que o resultado seja zero. :)"
x
é "Salvar e sair".