Je cherche à supprimer les commentaires C de nos fichiers de correctifs et j'ai regardé de nombreuses expressions régulières, mais si nous enlevons des lignes de nos correctifs - cela les casserait.Méthode pour supprimer les commentaires C des fichiers de correctifs
Comment écrivez-vous une commande regex ou sed pour rechercher des commentaires dans les fichiers de correctifs de différences et remplacer les lignes de commentaires par des espaces vides.
Cela fonctionne sed œuvres regex pour les fichiers C, mais pour les patches j'ai besoin quelque chose de différent:
sed '/^\/\*/,/\*\//d'
Un exemple correctif Exerpt serait:
@@ -382,7 +391,109 @@
return len;
}
+/**********************************************************************************
+ * Some patch
+ * Author: Mcdoomington
+ * Do somethimg
+ *
+ * fix me
+ **********************************************************************************/
Quelqu'un a des idées?
Edit:
En utilisant ce filtre:
sed -e 's,^+ \*.*,+ \/\/Comment removed,' mypatch.patch > output
+/**********************************************************************************
+ //Comment removed
+ //Comment removed
+ //Comment removed
Comment puis-je ajouter une si ligne se termine par \ pour sauter?
Edit: Solution
Sans la façon la plus propre - j'utilisé sed avec un regex truqué jury.
sed -e '/[^\*\/]$/{N;s,^+ \* .*,+ \* Comment removed,;}' patch > output
sed -e '/[^\*\/]$/{N;s,^+\\\* .*,+ \/\* Comment removed,;}' patch > output
Notez la seconde commande peut être un peu trop gourmand, mais aux fins de commentaires désinfectante - cela fonctionne!
Comment ça marche:
1.) Première commande Pour déterminer si cela est la fin d'un commentaire/[^ * /] $/détermine si elle est /puis {N; s, +^\ *., +/* Le commentaire a été supprimé ,;} 'trouve + * (peu importe) et le remplace par * Le commentaire a été supprimé.
2.) Deuxième commande Pour déterminer si cela est la fin d'un commentaire/[^ * /] $/détermine si elle est /puis {N; s,^+ \ *., +/* Le commentaire a été supprimé ,;} 'trouve + * (peu importe) et le remplace par * Le commentaire a été supprimé.
Les fichiers de correctifs sont-ils entrants ou les générez-vous? Est-ce que tous les commentaires que vous voulez déplacer, ou simplement bloquer les commentaires entre les fonctions? –
Les fichiers de correctifs ont déjà été créés et je cherchais un moyen facile de supprimer les commentaires ou au moins de les effacer. Créer de nouveaux correctifs est une tâche énorme en raison de l'environnement de transfert et ils sont environ 30+. – mcdoomington
Il y a un point où les expressions rationnelles ne sont tout simplement pas assez intelligentes ou flexibles pour faire ce que vous voulez; C'est l'un de ces cas. Vous devez être capable de reconnaître les jetons '/ *', '* /', et '//' et d'analyser le fichier en conséquence. Personnellement, je ferais mon propre filtre à la main pour un travail comme celui-ci; ne devrait pas prendre plus de quelques heures. –