Je souhaite supprimer automatiquement les spécifications d'exception obsolètes de mon code C++ et essayer d'utiliser sed pour cette tâche.Supprimer les spécifications d'exception du code C++ avec sed
format de spécification d'exception est throw
suivante avec la liste des exceptions (mots) entre parenthèses j'ai donc écrit cette sed:
sed -r 's,throw\s*[(].*[)],,g' foo.cpp
Il fonctionne pour les spécifications oneline mais ne fonctionne pas pour une multiligne de.
Il semble que dot ne correspond pas à des sauts de ligne althougth selon la documentation, il devra: https://www.gnu.org/software/sed/manual/html_node/Regular-Expressions.html
J'ai essayé cette solution de contournement, mais cela ne fonctionne pas non plus (en fait il ne fonctionne même pas pour les spécifications oneline):
sed -r 's,throw\s*[(][\s\S]*[)],,g'
Comment le faire fonctionner correctement?
ÉDITÉ:
exemple de spécification d'exception:
void foo() throw (std::runtime_error); //oneline
void bar() throw (std::runtime_error,
std::logic_error); //multiline
Fournissez des exemples de données. – sat
Le '.' correspondrait à des retours à la ligne, mais sed est un éditeur de ligne qui ne peut donc afficher qu'une seule ligne. Regardez [ici] (http://www.grymoire.com/Unix/Sed.html#uh-51) pour savoir comment faire correspondre plusieurs lignes. Bien que tbh je n'utiliserais pas sed pour analyser le code C++. – 123
Sed n'est pas obligatoire J'ai besoin de toute solution qui fonctionnera correctement. –