使用另一个在unix文件中包含反斜杠的字符串搜索并替换字符串

时间:2014-05-06 14:40:33

标签: bash parameters sed

我有一个替换字符串,它在参数replace_str中捕获。使用sed进行替换的以下命令会导致错误的替换错误:

sed 's/search_str/$replace_str/' 

其中replace_str的值为反斜杠,例如:01/2020

尝试了一些选项,例如在双引号内使用\等。但它没有帮助。如果您需要更多信息,请与我们联系。

感谢您的时间和帮助。

2 个答案:

答案 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会更快。