Count number of blank lines in a file

前端 未结 7 906
抹茶落季
抹茶落季 2021-02-01 01:38

In count (non-blank) lines-of-code in bash they explain how to count the number of non-empty lines.

But is there a way to count the number of blank lines in a file? By

相关标签:
7条回答
  • 2021-02-01 02:16

    To count how many useless blank lines your colleague has inserted in a project you can launch a one-line command like this:

    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}
    

    This prints:

    <filename0>.cpp #blankLines
    ....
    ....
    <filenameN>.cpp #blankLines
    Total #blankLinesTotal
    
    0 讨论(0)
  • 2021-02-01 02:17

    You can also use awk for this:

    awk '!NF {sum += 1} END {print sum}' file
    

    From the manual, "The variable NF is set to the total number of fields in the input record". Since the default field separator is the space, any line consisting in either nothing or some spaces will have NF=0.

    Then, it is a matter of counting how many times this happens.

    Test

    $ cat a
    aa dd
    
    ffffd
    
    
    he      llo
    $ cat -vet a # -vet to show tabs and spaces
    aa dd$
        $
    ffffd$
       $
    ^I$
    he^Illo$
    

    Now let's' count the number of blank lines:

    $ awk '!NF {s+=1} END {print s}' a
    3
    
    0 讨论(0)
  • 2021-02-01 02:25

    Another way is:

    grep -cvP '\S' file
    
    • -P '\S'(perl regex) will match any line contains non-space
    • -v select non-matching lines
    • -c print a count of matching lines

    If your grep doesn't support -P option, please use -E '[^[:space:]]'

    0 讨论(0)
  • 2021-02-01 02:27

    Using Perl one-liner:

    perl -lne '$count++ if /^\s*$/; END { print int $count }' input.file
    
    0 讨论(0)
  • 2021-02-01 02:29

    One way using grep:

    grep -c "^$" file
    

    Or with whitespace:

    grep -c "^\s*$" file 
    
    0 讨论(0)
  • 2021-02-01 02:35
    grep -v '\S' | wc -l
    

    (On OSX the Perl expressions are not available, -P option)

    0 讨论(0)
提交回复
热议问题