44

bashの(空白ではない)コード行のカウントでは、空でない行の数をカウントする方法を説明します。

しかし、ファイル内の空白行の数を数える方法はありますか?空白行とは、スペースが含まれている行も意味します。

4

7 に答える 7

65

別の方法は次のとおりです。

grep -cvP '\S' file
  • -P '\S'(perl regex)は、スペース以外を含むすべての行に一致します
  • -v一致しない行を選択します
  • -c一致する行の数を出力します

-Pgrepがオプションをサポートしていない場合は、-E '[^[:space:]]'

于 2012-11-22T04:57:07.533 に答える
25

使用する1つの方法grep

grep -c "^$" file

または空白を使用する場合:

grep -c "^\s*$" file 
于 2012-11-22T04:55:54.943 に答える
2

Perlワンライナーの使用:

perl -lne '$count++ if /^\s*$/; END { print int $count }' input.file
于 2013-12-13T07:22:14.093 に答える
2

これにも使用できます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
于 2015-04-01T12:41:03.477 に答える
2

grep -cx '\s*' file

また

grep -cx '[[:space:]]*' file

これは、Steveの回答のコードよりも高速です。

于 2018-03-13T16:00:24.080 に答える
1

同僚がプロジェクトに挿入した役に立たない空白行の数を数えるには、次のような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
于 2015-03-24T12:51:12.183 に答える
1
grep -v '\S' | wc -l

(OSXではPerl式は使用できません。-Pオプション)

于 2015-09-15T21:21:12.497 に答える