egrep匹配表达式与通配符

问题描述 投票:0回答:1

通过一些练习,卡在这一个:

egrep "s*as" states.txt

## Alaska
## Arkansas
## Kansas
## Massachusetts
## Nebraska

我能理解为什么选择阿肯色州,堪萨斯州,马萨诸塞州,为什么选择阿拉斯加?应该有“s * as”的第一个“s”,不是吗?我错过了什么吗?对不起,如果答案很明显,我不明白。 grep给出了相同的结果。

regex bash grep wildcard
1个回答
2
投票

在您下面的egrep电话中:

egrep "s*as" states.txt

数量s*意味着匹配s零次或多次。因此,Alaska匹配,因为它包含as。如果你打算匹配s,后跟任何单个字符,然后是as然后使用dot:

egrep "s.as" states.txt

请注意,文件名通配符和正则表达式之间存在差异。

*正则表达,引用GNU Grep manual

前面的项目将匹配零次或多次

文件名通配符中的*,引用Bash Reference Manual

匹配任何字符串,包括空字符串

© www.soinside.com 2019 - 2024. All rights reserved.