我正在尝试创建一个匹配带有预定义正则表达式的字符串的shell脚本。我有以下代码:
#!/bin/sh
name="Name of string to match. #123"
(echo "$name" | grep -Eq ^[#]\d+$) && echo "matched" || echo "did not
match"
我总是得到一个“不匹配”的消息,即使我认为示例中的字符串应该与正则表达式匹配。谁能意识到我做错了什么?正则表达式是错误的还是调用grep?
答案 0 :(得分:2)
用报价包装正则表达式:
(echo "$name" | grep -Eq '^[#]\d+$') && echo "matched" || echo "did not match"
如果您希望示例输入匹配,请删除输入开始锚^
,即使用'[#]\d+$'
作为您的正则表达式(这将匹配结束中的任何内容#
然后是数字。)