在count (non-blank) lines-of-code in bash中,他们解释了如何计算非空行的数量。
但有没有办法计算文件中的空白行数?通过空白行我也指其中有空格的行。
答案 0 :(得分:52)
另一种方式是:
grep -cvP '\S' file
-P '\S'
(perl regex)将匹配任何包含非空格的行-v
选择不匹配的行-c
打印匹配行数如果您的grep不支持-P
选项,请使用-E '[^[:space:]]'
答案 1 :(得分:21)
使用grep
的一种方式:
grep -c "^$" file
或者用空格:
grep -c "^\s*$" file
答案 2 :(得分:2)
使用Perl one-liner:
perl -lne '$count++ if /^\s*$/; END { print int $count }' input.file
答案 3 :(得分: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
答案 4 :(得分:2)
grep -cx '[[:space:]]*' file
或
def s = new File("uncompressed.pdf").getText("ISO-8859-1").replaceAll("ORIGINALSTRING", "NEWSTRING")
def bb = s.getBytes("ISO-8859-1")
new File("uncox3.pdf").setBytes(bb)
这比史蒂夫回答的代码要快。
答案 5 :(得分: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
答案 6 :(得分:-1)
grep -v '\S' | wc -l
(在OSX上,Perl表达式不可用,-P选项)