2017-03-12 2 views
0

Ich möchte Zeilen ohne Kommentare zählen.Zeilen im C-Quellcode zählen Kommentare und Leerzeilen ignorieren

cat `find linux-4.10.2 -name "*.c" -print` | wc -l 

Diese Zählung Linien in .c Dateien

cpp -fpreprocessed -dD -P fork.c 

Diese Kommentare

grep "^\s*$" fork.c 

Diese Zählung leere Zeilen

Wie entfernen Sie den Befehl schreiben Codezeilen zu zählen und die Linien leeren?

+0

https: // github.com/AlDanial/cloc – hek2mgl

+0

grep -v kehrt eine Suche um. Das sollte helfen. –

Antwort

0

Sie können so etwas wie dies zutreffen:

while IFS= read -r -d '' fl;do 
#your commands here 
echo "total lines= $(wc -l <$fl)" 
echo "lines without comments= $(wc -l < <(cpp -fpreprocessed -dD -P $fl))" 
#Considering that above cpp will return all the lines without the comments. 

#more commands 
done< <(find linux-4.10.2 -type f -name "*.c" -print0) 

PS: Wir verwenden -print0 in Fund, haben null als Dateinamen Trennzeichen und stellen Sie sicher, dass alle Dateinamen korrekt behandelt werden durch while-Schleife zu lesen, egal ob sie enthalten Sonderzeichen, Leerzeichen, etc

PS2: Wenn Sie beraten, wie die Kommentarzeilen aussehen, können wir sie auch mit anderen Tools wie sed.See entfernen dieses Beispiel:

$ a=$'code\n/*comment1\ncooment2\ncomment3*/\ncode' 

$ echo "$a" 
code 
/*comment1 
cooment2 
comment3*/ 
code 

$ wc -l <<<"$a" 
5 

$ sed '/\/\*/,/\*\//d' <<<"$a" #for variables you need <<<, for files just one < 
code 
code 

$ wc -l < <(sed '/\/\*/,/\*\//d' <<<"$a") 
2 
Verwandte Themen