2016-07-16 199 views
0

我对这样一个基本问题表示歉意,但我试图用awk来计算文本文件中的空行数。这不是一项家庭作业。 Windows 10. Gawk 4.1.3用awk在文件中查找空行

BEGIN { x=0 } 
/^$/ { x=x+1 } 
END { print "I found " x " blank lines." } 

输出总是:我发现0个空行。

谢谢。

+2

您的解决方案适用于我。你还认为仅有空白的行是空白的吗? – eush77

+2

gawk'NF == 0 {x ++} END {print“我找到了”x“空白行。” }'文件 – Chet

+1

因为它按照eush77工作,所以它可能只是一个行结束符问题。也许尝试先通过'dos2unix'管道。 – matz

回答

4

该命令应该可以工作,但您可以跳过x的初始化。 awk会自动为你做。您可以使用NF变量进行检查,如果它是0,则该值为false该行为空。此外,我建议使用printf

!NF {x++} 
END {printf "I found %d blank lines\n", x} 

顺便说一句,你可以简单地使用grep

grep -ch '^$' file 

-c只输出出现的次数发现,-h取消文件名的输出。

使用命令替换的输出插值为echo声明:

echo "I found $(grep -ch '^$' file) blank lines" 
1

除了你已经得到了很好的解决方案的awk,sed的解决办法是

sed -n '/^$/p' file |wc -l 

这里-n禁止显示正常输出,p打印行空白的行 - (^$)。 wc -l计算如此打印的总行数。