在bash 中的 count (non-blank) lines-of-code 中,他们解释了如何计算非空行的数量。
但是有没有办法计算文件中的空白行数?空行是指其中有空格的行。
在bash 中的 count (non-blank) lines-of-code 中,他们解释了如何计算非空行的数量。
但是有没有办法计算文件中的空白行数?空行是指其中有空格的行。
另一种方法是:
grep -cvP '\S' file
-P '\S'
(perl regex) 将匹配任何包含非空格的行-v
选择不匹配的行-c
打印匹配行数如果您的 grep 不支持-P
选项,请使用-E '[^[:space:]]'
一种使用方式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
这比史蒂夫答案中的代码要快。
要计算您的同事在项目中插入了多少无用的空行,您可以启动如下一行命令:
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 选项)