Use perl:
perl -pe 's/(?<=\[)(\d+)(?=\])/$1+1/ge' prova.txt
Explicação:
-
-psignifica repetir todas as linhas e imprimir o resultado depois de cada linha -
-edefine a expressão a ser executada em todas as linhas -
s/from/to/faz uma simples subestição -
s/(\d+)/$1+1/gecorresponde a um ou mais dígitos, captura-o em$1e, em seguida, o modificadoreno final informa ao perl que a sequência de subseqüência é uma expressão:$1+1substitui o valor$1plus 1.gmodifier significa fazer esta substituição globalmente, ou seja, mais de uma vez por linha. -
(?<=\[)é uma asserção lookbehind de comprimento zero positiva. Isso significa que o que vem depois só coincide se for precedido por[(que precisa ser escapado com\, pois[é um token especial em expressões regulares). A coisa de comprimento zero significa que não faz parte do que será substituído. -
(?=\])é uma asserção lookahead positiva de comprimento zero. Isso significa que o que vem antes só coincide se for seguido por](novamente escapou).
Então, isso levará todos os números entre [ e ] e incrementará esse número.