为什么不使用第一和第二个变体,但第三个工作
#!/bin/sh
#---------------------------------------------
text="my:?text=this:one"
if (echo $text | grep '^my\:\?text=this\:one') then
echo "1"
elif (echo $text | grep '^my:\?text=this:one') then
echo "2"
elif (echo $text | grep 'text=this:one') then
echo "3"
fi
答案 0 :(得分:7)
默认情况下,grep不使用正则表达式,添加-E
标志以启用扩展正则表达式。
编辑:默认情况下,grep不使用扩展正则表达式,grep -E
通常为egrep
添加别名以便更快地使用
答案 1 :(得分:3)
使用Egrep扩展grep功能:
echo $text | egrep '^my\:\?text=this\:one'
答案 2 :(得分:1)
因为:
不是正则表达式中的特殊符号而且不需要转义。
答案 3 :(得分:1)
删除问号前的反斜杠。它不被grep
视为特殊字符。相反,添加反斜杠会增加其特殊含义。