我运行了grep 'd(o|i)g' a.txt
a.txt 包含dig
但没有返回任何内容。这是正确的匹配方式dog
吗dig
?
答案1
是的,d(o|i)g
这是正确的方法。你也可以这样做,d[oi]g
因为你正在处理单个字符。
您需要-E
在 grep 调用中使用该标志来获取扩展的正则表达式。
$ cat a.txt
bird
dog
cat
dug
$ grep 'd(o|i)g' a.txt
$ grep -E 'd(o|i)g' a.txt
dog
答案2
您需要转义正则表达式元字符,例如
> echo dig | grep "d\(o\|i\)g"
dig
,或者您可以切换到 ERE(“扩展正则表达式”):
echo dig | grep -E "d(o|i)g"
dig
答案3
您也可以尝试,grep 'd[io]g'
但这仅适用于单个字符。