我有一个替换字符串,它在参数replace_str中捕获。使用sed进行替换的以下命令会导致错误的替换错误:
sed 's/search_str/$replace_str/'
其中replace_str的值为反斜杠,例如:01/2020
尝试了一些选项,例如在双引号内使用\
等。但它没有帮助。如果您需要更多信息,请与我们联系。
感谢您的时间和帮助。
答案 0 :(得分:1)
由于我无法在评论中说清楚,我发帖作为答案:
$ var="01/2020"
使用sed "s/...
失败:
$ echo "hello you" | sed "s/hello/$var/"
sed: -e expression #1, char 16: unknown option to `s'
这是因为它被转换为具有如此多斜杠/
的东西:
$ echo"你好" | sed" s / hello / 01/2020 /"
而是使用其他分隔符,例如?
或|
:
$ echo "hello you" | sed "s?hello?$var?"
01/2020 you
$ echo "hello you" | sed "s|hello|$var|"
01/2020 you
答案 1 :(得分:0)
replace_str_esc="$( echo "${replace_str}" | sed 's|[][\\&]|\&|g' )"
sed "s/{search_str}/${replace_str_esc}/" YourFile
更换字符串的更多内容(对于单个/
,使用另一个patterne替换分隔符直接使用sed会更快。