$ sed '/\includegraphics/s/img[0-9]*/&.png/g' input
\includegraphics[width=0.49\textwidth]{img1.png}
\includegraphics{img2.png}
\subfloat{\includegraphics[width=0.3\textwidth]{img3.png}}
\subfloat{\includegraphics{img4.png}}
A expressão regular para a operação de substituição procura img
seguido por qualquer número de dígitos (incluindo zero dígitos) e acrescenta .png
ao final da correspondência.
Uma versão um pouco mais robusta, que só executará as chaves de substituição dentro :
$ sed '/\includegraphics/s/{\(img[0-9]*\)}/{.png}/g' input
\includegraphics[width=0.49\textwidth]{img1.png}
\includegraphics{img2.png}
\subfloat{\includegraphics[width=0.3\textwidth]{img3.png}}
\subfloat{\includegraphics{img4.png}}
Isso procura (por exemplo) {img3}
em qualquer linha contendo \includegraphics
, extrai img3
dele, acrescenta .png
e recapitula que em novas chaves, para o {img3.png}
desejado.