2010-11-17 10 views
1

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

2
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.

+0

Merci beaucoup. C'était très utile –

1

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 
+0

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. –

1

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.