bashの(空白ではない)コード行のカウントでは、空でない行の数をカウントする方法を説明します。
しかし、ファイル内の空白行の数を数える方法はありますか?空白行とは、スペースが含まれている行も意味します。
bashの(空白ではない)コード行のカウントでは、空でない行の数をカウントする方法を説明します。
しかし、ファイル内の空白行の数を数える方法はありますか?空白行とは、スペースが含まれている行も意味します。
別の方法は次のとおりです。
grep -cvP '\S' file
-P '\S'
(perl regex)は、スペース以外を含むすべての行に一致します-v
一致しない行を選択します-c
一致する行の数を出力します-P
grepがオプションをサポートしていない場合は、-E '[^[:space:]]'
使用する1つの方法grep
:
grep -c "^$" file
または空白を使用する場合:
grep -c "^\s*$" file
Perlワンライナーの使用:
perl -lne '$count++ if /^\s*$/; END { print int $count }' input.file
これにも使用できますawk
:
awk '!NF {sum += 1} END {print sum}' file
マニュアルから、「変数NFは入力レコードのフィールドの総数に設定されます」。デフォルトのフィールドセパレータはスペースであるため、スペースがないか一部のスペースで構成される行には、が含まれますNF=0
。
次に、これが何回発生するかを数えることが重要です。
$ cat a
aa dd
ddd
he llo
$ cat -vet a # -vet to show tabs and spaces
aa dd$
$
ddd$
$
^I$
he^Illo$
次に、空白行の数を数えましょう。
$ awk '!NF {s+=1} END {print s}' a
3
grep -cx '\s*' file
また
grep -cx '[[:space:]]*' file
これは、Steveの回答のコードよりも高速です。
同僚がプロジェクトに挿入した役に立たない空白行の数を数えるには、次のような1行のコマンドを起動できます。
blankLinesTotal=0; for file in $( find . -name "*.cpp" ); do blankLines=$(grep -cvE '\S' ${file}); blankLinesTotal=$[${blankLines} + ${blankLinesTotal}]; echo $file" has" ${blankLines} " empty lines." ; done; echo "Total: "${blankLinesTotal}
これは印刷します:
<filename0>.cpp #blankLines
....
....
<filenameN>.cpp #blankLines
Total #blankLinesTotal
grep -v '\S' | wc -l
(OSXではPerl式は使用できません。-Pオプション)