C'est curieux chez les marins ce besoin de faire des phrases
Par hr le mardi 18 mars 2008, 15:47 - code - Lien permanent
Suite à une remarque judicieuse j'ai été obligé de gérer un petit cas particulier qui conduisait à un conflit. Le script sed est maintenant modifié, ce n'est pas extrêmement propre mais c'est assez efficace. Le bout du script concerné est :
# remove /* */ comments, multiline or not
/\/\*/{
# special case of /*/ starting comments that fools the next test
s:/\*/:/\* /:
:mline
/\*\// {
s:/\*.*\*/::
b mlineend
}
N
b mline
}
:mlineend
Commentaires
Tiens, j'en ai trouvé un autre :
/* */ int w; /* */
Il n'y aura pas vraiment de solution simple pour ce cas que j'ai testé déjà. Les expressions régulières de sed sont gourmandes et ce comportement ne peut pas être désactivé. Comme les groupements non capturant type @@(? ... )@@ n'existent pas non plus, je ne vois pas de sans faire des choses sales ou alambiquées.
On peut également simplifier le travail de sed et déléguer la suppresion des lignes vides à grep ('grep .").
Ou mieux encore:
sed -e :LABEL -e 's#/\*.*\*/##g; \#/\*#N; \##bLABEL' -e '/^[[:space:]]*$/d'
Note: la page de Thomas Leduc est ma référence:
http://thomas.leduc.free.fr/faqs/in...
Dans ce cas, j'en ai un autre :
printf("/*");
printf("Je ne suis pas un commentaire !");
printf("*/");