Bonjour,
J'ai un fichier fich qui contient les données suivantes:
cat fich
put '/*-- ' pepe ' -- */';
put "put " var1 ' +(-1) ";" /* car ' pepe ' */ '; var5 /* ppppp; put '; run;'; */
put "put " var1 ' +(-1) ";" /* car ' pepe ' */ ';
if last then put 'v;' ; v2 /* eeeee; put '; run;'; */
pour supprimer ou modifié la chaine /* qui se trouve entre les quotes simples ou doubles.
j'utilise la commande sed:
sed "s,\('[^']*\)/\*\([^']*'\),\1A\2,g" fic
put 'A-- ' pepe ' -- */';
put "put " var1 ' +(-1) ";" A car ' pepe ' */ '; var5 A ppppp; put '; run;'; */
put "put " var1 ' +(-1) ";" A car ' pepe ' */ ';
if last then put 'v;' ; v2 A eeeee; put '; run;'; */
mais mon problème c'est que la chaine /* qui se située à la derniere ligne
et qui ne se trouve pas entre quotes est remplacé par la chaine A.
Merci d'avance
# A confirmer...
Posté par Steve Azriel . Évalué à 2.
Je crois que l'expression donnée à sed fonctionne aussi pour la dernière ligne car:
... ' ; v2 /* eeeee; put '....
entre bien dans le périmètre de "s,\('[^']*\)/\*\([^']*'\),\1A\2,g"...
Par contre, je n'ai pas (là) d'idée pour éviter cela.
Bon courage !
Cdlt,
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.