关于awk的一个显示问题

谁来解释一下这里头不同显示的缘故??
aa.jpg (42.07 KB)
2011-8-8 13:04

作者: twenty_four   发布时间: 2011-08-08

首先你要了解一下awk的匹配规则。第一次匹配后就开始生效。结束的时候也是。
第一个开始匹配是sun。从sun开始打印。结束的时候是Moon所以到这里就结束退出了。不会在打印moon。因为他只匹配第一个。
第二个是从Moon开始匹配。一直匹配到/[Ss]un/ 如果没有/[Ss]un/就一直到结束。

awk是按行读取。。一行一行往下读。不会回头在去匹配的。
不知道这样讲你明白了没有。。

作者: wenmin88888   发布时间: 2011-08-08

至于LZ明不明白,我。。。。反正是明白了

如果把[ ]里的mM写成这样就都能显示了。。。。

作者: dn833   发布时间: 2011-08-08

额。。不是这个意思。这个和正则没关系。只要匹配到第一个就停止。不管你正则里面怎么写。反正第一个匹配的肯定先是Moon

作者: wenmin88888   发布时间: 2011-08-08

awk是按行读取。。一行一行往下读。不会回头在去匹配的。
这句话来的经典。
虽然自己知道读取流程是这么来的,不过从当时就没那股感觉。哈哈

作者: twenty_four   发布时间: 2011-08-08

“把[ ]里的mM写成这样就都能显示了。。。。 ”

[Alibaba root@localhost /root]
#awk '/[mM]oon/,/[Ss]un/' test  
Moon
moon
一样的,看匹配顺序呀~ 哈哈

作者: twenty_four   发布时间: 2011-08-08