例如,我有一个匹配xx-xx-xxx
的正则表达式:[a-z0-9]{2}-[a-z0-9]{2}-[a-z0-9]{3}
,我想将它存储到变量中,以便我可以在程序中继续引用它。这是我试过的:
pattern="[a-z0-9]{2}-[a-z0-9]{2}-[a-z0-9]"
grep -i "here:$pattern" file.log # assuming that my log file has "hi:xx-xx-xxx" pattern strings.
没有返回结果但是如果我执行:
grep -i "here:[a-z0-9]{2}-[a-z0-9]{2}-[a-z0-9]" file.log
有效。我做错了什么?
答案 0 :(得分:0)
你必须像\{2\}
那样转义大括号,或者通过-E
标志使用grep的扩展regexp模式。
因此,它将是
pattern='[a-z0-9]{2}-[a-z0-9]{2}-[a-z0-9]{3}'
echo "hi:aa-00-xxx" | grep -iE "hi:$pattern"
或
pattern='[a-z0-9]\{2\}-[a-z0-9]\{2\}-[a-z0-9]\{3\}'
echo "hi:aa-00-xxx" | grep -i "hi:$pattern"