Grep和正则表达式,匹配单词,空格和两位数

时间:2016-03-04 11:08:20

标签: regex bash unix grep

我开始操纵正则表达式并希望知道我在这里做错了什么。

我的目的是在文件中搜索相当于以下描述的匹配:

  

“lignes”一词后面可能跟一个空格和两个数字,范围在0到9之间。

当我这样做时:

grep -ic -e "lignes[[:blank:]][0-9][0-9]" exemples-grep.txt我得了2场比赛。

我希望考虑到是否有空格的可能性我添加了?,并且想要更好地将其分解,我写道:

grep -ic -e "lignes[[:blank:]]?[0-9]{2} exemples-grep.txt它显示0个匹配项。

我的错误在哪里?

1 个答案:

答案 0 :(得分:3)

您需要转义?,因为默认的基本正则表达式(BRE)?与文字?匹配。否则,您可以使用-E(扩展正则表达式)选项。

请参阅以下示例:

grep -ic "lignes[[:blank:]]?[0-9][0-9]" <<< 'lignes 12'
0

grep -ic "lignes[[:blank:]]\?[0-9][0-9]" <<< 'lignes 12'
1

grep -Eic "lignes[[:blank:]]?[0-9][0-9]" <<< 'lignes 12'
1