如何用 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 字符。
问题
如何排除以 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 字符。