使用awk查找文件中的空行
对于这样一个基本的问题,我深表歉意,但我正试图用awk计算文本文件中的空行数。这不是家庭作业。视窗10。Gawk 4.1.3使用awk查找文件中的空行,awk,gawk,Awk,Gawk,对于这样一个基本的问题,我深表歉意,但我正试图用awk计算文本文件中的空行数。这不是家庭作业。视窗10。Gawk 4.1.3 BEGIN { x=0 } /^$/ { x=x+1 } END { print "I found " x " blank lines." } 输出总是:我发现0个空行 谢谢。该命令应该可以工作,但您可以跳过x的初始化awk将自动为您执行此操作。您可以使用NF变量进行该检查,如果该变量为0,其计算结果为false,则该行为空。此外,我建议使用printf: !
BEGIN { x=0 }
/^$/ { x=x+1 }
END { print "I found " x " blank lines." }
输出总是:我发现0个空行
谢谢。该命令应该可以工作,但您可以跳过
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"
该命令应该可以工作,但您可以跳过
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"
除了您已经得到的好的awk解决方案之外,sed解决方案将是
sed -n '/^$/p' file |wc -l
此处
-n
抑制正常输出,p
打印行为空的行(^$
)wc-l
计算这样打印的行总数。除了您已经得到的漂亮的awk解决方案之外,sed解决方案将是
sed -n '/^$/p' file |wc -l
此处
-n
抑制正常输出,p
打印行为空的行(^$
)wc-l
计算这样打印的行总数。您的解决方案对我有效。您是否还考虑空白仅行空白?GAWK’NF==0 {x++}结束{打印“我找到”x“空白行”}文件,因为它根据EUS77工作,它可能只是一个行终止符问题。也许可以先尝试通过dos2unix
进行管道传输。grep-cvP'\S'文件
或awk/^[:space:]*$/{x++}
应该可以工作。您是否将该脚本保存在正在使用awk-f脚本输入执行的文件中
或者您正在尝试使用awk'BEGIN{…}输入
从命令行调用它?如果是前者,很好,如果是后者,就改为前者@检查如果您删除了OPs BEGIN部分(您应该删除该部分),那么您需要使用printf%d
或使用x+0
来避免空文件的输出为空而不是零。您的解决方案对我很有效。您是否还考虑空白仅行空白?GAWK’NF==0 {x++}结束{打印“我找到”x“空白行”}文件,因为它根据EUS77工作,它可能只是一个行终止符问题。也许可以先尝试通过dos2unix
进行管道传输。grep-cvP'\S'文件
或awk/^[:space:]*$/{x++}
应该可以工作。您是否将该脚本保存在正在使用awk-f脚本输入执行的文件中
或者您正在尝试使用awk'BEGIN{…}输入
从命令行调用它?如果是前者,很好,如果是后者,就改为前者@检查如果您删除了OPs BEGIN部分(您应该删除),那么您需要使用printf%d
或使用x+0
来避免空文件的输出为空而不是零。