这个awk命令是如何工作的?
以下非常简洁的命令将打印图案第一次出现(包括第一次出现)后的所有行: 有人能解释一下这个命令是如何工作的吗?awk如何解析“/pattern/,0”这个awk命令是如何工作的?,awk,Awk,以下非常简洁的命令将打印图案第一次出现(包括第一次出现)后的所有行: 有人能解释一下这个命令是如何工作的吗?awk如何解析“/pattern/,0” (顺便说一句,我没有想到这一点;它是发布在上的。)根据awk手册页: 模式是正则表达式的任意布尔组合(带!|&&&) 表达式和关系表达式 一个模式可以由两个以逗号分隔的模式组成;在这个 在这种情况下,将对从出现 第一个模式虽然出现了第二个 这里第一个是/pattern/,第二个是文本常量0,这是false。因此,这从匹配的第一行开始,当一行根本不存
(顺便说一句,我没有想到这一点;它是发布在上的。)根据
awk
手册页:
模式是正则表达式的任意布尔组合(带!|&&&)
表达式和关系表达式
一个模式可以由两个以逗号分隔的模式组成;在这个
在这种情况下,将对从出现
第一个模式虽然出现了第二个
这里第一个是/pattern/
,第二个是文本常量0
,这是false。因此,这从匹配的第一行开始,当一行根本不存在时停止,这只发生在文件结束后
另一个例子是,比较:
jot 10
与:
因此,
awk'/foo/,/bar/{print$0}文件
将打印文件中从单词foo
到bar
的每一行
这种/foo/,/bar/
语法称为范围模式。如果第一个正则表达式常量/foo/
匹配,则将执行块,直到第二个正则表达式常量/bar/
匹配为止。通过将第二个正则表达式常量设置为0(即false),它将永远不会匹配,因此块将在每一行上执行,直到文件结束
在
awk
中,如果没有为某个条件指定要执行的块
,则执行默认块{print$0} 否:/pattern/
是单个地址表单,因此它只匹配与该模式匹配的行。双地址表单在第一次匹配时触发,在第二次匹配时再次关闭。修复前一条注释的措辞为时已晚,它应该在第二次匹配后显示“after”。(例如,尝试上面的jot
)
jot 10
jot 10 | awk 'NR==4,NR==6 { printf("line %d: %s\n", NR, $0) }'