如何在shell脚本中使用grep进行正则表达式匹配?

时间:2018-03-07 21:18:12

标签: shell grep

我正在尝试创建一个匹配带有预定义正则表达式的字符串的shell脚本。我有以下代码:

#!/bin/sh
name="Name of string to match. #123"

(echo "$name" | grep -Eq  ^[#]\d+$) && echo "matched" || echo "did not 
match"

我总是得到一个“不匹配”的消息,即使我认为示例中的字符串应该与正则表达式匹配。谁能意识到我做错了什么?正则表达式是错误的还是调用grep?

1 个答案:

答案 0 :(得分:2)

用报价包装正则表达式:

(echo "$name" | grep -Eq '^[#]\d+$') && echo "matched" || echo "did not match"

如果您希望示例输入匹配,请删除输入开始锚^,即使用'[#]\d+$'作为您的正则表达式(这将匹配结束中的任何内容#然后是数字。)