如何用 awk 排除空行?

How can I exclude blank lines with awk?

问题

如何排除以 space 字符开头且该行没有其他内容的行?使用 awk,我想打印行 Need to print,但它也打印空行。我怎样才能排除它?

脚本:test.awk

[=10=] !~/^start|^#/ {
print "Result : %s",[=10=]
}

数据

# test

start
Need to print

结果

Result : %s 
Result : %s Need to print

使用NF变量

您并不是在真正询问以 space 开头的行,您是在询问如何丢弃空行。从实用的角度来说,空白行没有字段,因此您可以使用内置的 NF 变量来丢弃至少没有一个字段的行。例如:

$ awk 'NF > 0 && !/^(start|#)/ {print "Result: " [=10=]}' /tmp/corpus 
Result: Need to print

您可以使用:

awk '/^[^[:space:]]/{print "Result : " [=10=]}'

使用 [^[:space:]] 可确保在打印的每一行中至少有一个非 space 字符。