2017-03-12 5 views
0

コメントなしで行を数えたい。コメントと空白を無視してCのソースコード内の行をカウント

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

.cファイルで、このカウントラインが

cpp -fpreprocessed -dD -P fork.c 

このコメントは、コードの行をカウントするコマンドを作成する方法を

grep "^\s*$" fork.c 

このカウント空行

を削除し、行を空にする?

+0

ます。https:// github.com/AlDanial/cloc – hek2mgl

+0

grep -vは検索を逆転させます。それが助けになるはずです。 –

答えて

0

あなたはこのようなものを適用することができます。

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を:私たちは、ファイル名の区切り文字としてnullを持っており、しばらくはループを読むことにより、すべてのファイル名がどんなに場合、正しく処理されることを保証するために、検索に-print0使用します彼らは特殊文字、スペースを含んで行うなど

PS2:あなたはコメント行がどのように見えるか助言した場合、我々はまた、sed.Seeのような他のツールこの例でそれらを削除することができます。

$ 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 
関連する問題