J'ai plusieurs programmes C
qui contiennent une ligne de commentaire au début de chaque programme. les lignes commencent par/* suivi par la première ligne de commentaire, mais la ligne de terminaison a */comme only
caractères dans la ligne. Pouvez-vous s'il vous plaît me dire un moyen de supprimer ces commentaires de tous les fichiers?UNIX, comment enlever des commentaires de plusieurs fichiers?
Répondre
find -name '*.c'
Utilisez ceci pour vérifier que vous travaillez sur les bons fichiers.
find -name '*.c' | xargs sed -i '0,/^*\/$/d'
Ceci supprime jusqu'à et y compris la première ligne contenant uniquement le terminateur.
Cela supprime les lignes commençant par /*
complète le premier match de */
(qui doit être la terminaison de commentaire, que sa ligne commence par un espace supplémentaire ou non): manière
sed '/^\/\*/,/\*\//d' < inputfile
L'OP veut apparemment enlever seulement le premier bloc de commentaire. Votre réponse les supprimera tous. Il n'y a pas besoin d'utiliser la redirection, 'sed' acceptera un nom de fichier comme argument. –
Un (laid) est d'utiliser cpp
, le pré-processeur C. .: par exemple
$ echo "AAA ; /* hahaha */ " | cpp -
# 1 "<stdin>"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "<stdin>"
AAA ;
la sortie est Bien que sémantiquement exactement la même que votre entrée, cpp
REMPLACERONS toutes vos directives de préprocesseur, ce qui est sans doute pas ce que vous voulez. D'autre part, il est très bon à ce qu'il fait.
Merci beaucoup. C'était très utile –