Bash 使用具有许多不同字符的sed替换字符串
我希望变量服务被字符串$SERVICE替换。我用过sedBash 使用具有许多不同字符的sed替换字符串,bash,shell,sed,Bash,Shell,Sed,我希望变量服务被字符串$SERVICE替换。我用过sed sed“s/SERVICE/$SERVICE/g” 问题在于变量$service具有特殊字符,如“,[,],/,\,”,?,`和类似字符。$service中特殊字符的顺序是不固定的。并且每当$service中有一个特殊字符,如“内有”,sed都无法正确替换它。是否存在特殊字符不会干扰sed替换过程的解决方案。它说,下面给出的答案对我不起作用 sed: -e expression #1, char 107: unknown option t
sed“s/SERVICE/$SERVICE/g”
问题在于变量$service具有特殊字符,如“,[,],/,\,”,?,`和类似字符。$service中特殊字符的顺序是不固定的。并且每当$service中有一个特殊字符,如“内有”,sed都无法正确替换它。是否存在特殊字符不会干扰sed替换过程的解决方案。它说,下面给出的答案对我不起作用
sed: -e expression #1, char 107: unknown option to `s'
尝试这样做:
sed "s@SERVICE@$(printf '%q' "$service")@g"
是另一个修饰符,可以是任何字符@
为shell转义给定字符串:printf“%q”
但是如果变量
$service
包含字符@
,该怎么办?另外,printf“%q”
可能会用$“…”
回答某些问题。它只确保shell可以重用它。例如,printf“%q'é”
shopping。您能否提供几个$service
变量值的示例。
$ printf '%q' '*$!'
\*\$\!