egrep匹配表达式与通配符

时间:2017-12-22 01:28:16

标签: regex bash grep wildcard

经历了一些练习,陷入了困境:

egrep "s*as" states.txt

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

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

1 个答案:

答案 0 :(得分:2)

致电以下egrep

egrep "s*as" states.txt

数量s*表示匹配s 或更多次。因此,Alaska匹配,因为它包含as。如果您打算匹配s,后跟任何单个字符,然后是as,请使用点数:

egrep "s.as" states.txt

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

正则表达式中的

*,引用GNU Grep manual

  

前一项将匹配零次或多次


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

  

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