1

问题

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

脚本:test.awk

$0 !~/^start|^#/ {
print "Result : %s",$0
}

数据

# test

start
Need to print

结果

Result : %s 
Result : %s Need to print
4

2 回答 2

4

使用NF变量

您实际上并不是在询问以空格开头的行,而是在询问如何丢弃空白行。务实地说,空白行没有字段,因此您可以使用内置的NF变量来丢弃至少没有一个字段的行。例如:

$ awk 'NF > 0 && !/^(start|#)/ {print "Result: " $0}' /tmp/corpus 
Result: Need to print
于 2016-02-18T14:28:37.440 回答
3

您可以使用:

awk '/^[^[:space:]]/{print "Result : " $0}'

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

于 2016-02-18T14:28:39.960 回答