Je programme en bash pour modifier une grande collection de fichiers construits en C et j'ai besoin de commenter des segments d'information (/* */).
La ligne se lit comme suit : *action.acroread : {APPMGR_acroread("blah.pdf");}
Je veux insérer une chaîne de commentaire "/* */" avant le {APPMGR... et la fermer à la fin de la ligne.
Actuellement, j'ai le code
for i_file in $file_list[@]}; do
sed -i '/^*action.acroread/ s|.*|/* & */|' $i_file
...
done
qui insère un /* au début de la ligne et un */ à la fin de la ligne, en commentant la ligne entière. Cela empêche également l'ajout de plusieurs blocs de commentaires au cas où j'exécuterais le script plusieurs fois.
Ce que je dois faire, c'est ajouter /* devant {APPMGR_acroread("blah.pdf");} et */ à la fin de la ligne, de sorte que le résultat final devrait ressembler à ceci
*action.acroread: /* {APPMGR_acroread(“blah.pdf”);} */
Ce que j'ai jusqu'à présent est
sed -i ‘/^action.acroread/ s|.{APPMGR_acroread|/* & */|’ $i_file
Le résultat est le suivant
*action.acroread:/* {APPMGR_acroread */(“blah.pdf”);}
En outre, en l'exécutant une deuxième fois, une deuxième paire de blocs de commentaires apparaît
*action.acroread:/* /* {APPMGR_acroread */ */(“blah.pdf”);}
Le blah.pdf est différent dans chaque fichier. (blah.pdf, blah2.pdf, blah3.pdf, etc.)
Comment puis-je modifier le code pour ne bloquer en commentaire que la seconde moitié de la ligne en plus d'empêcher les blocs de commentaires multiples lors de l'exécution du script plusieurs fois ? Merci.