我开始操纵正则表达式并希望知道我在这里做错了什么。
我的目的是在文件中搜索相当于以下描述的匹配:
“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个匹配项。
我的错误在哪里?
答案 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