【发布时间】:2014-06-23 06:01:45
【问题描述】:
我有一个替换字符串,它在参数replace_str 中捕获。以下带有 sed 替换的命令给出了错误的替换错误:
sed 's/search_str/$replace_str/'
其中 replace_str 的值带有反斜杠,例如:01/2020
尝试了几个选项,例如使用\,在双引号内等。但它没有帮助。如果您需要更多信息,请告诉我。
感谢您的时间和帮助。
【问题讨论】:
-
这是因为在解释
$replace_str时,sed命令有很多斜线。尝试使用另一个分隔符:sed "s_search_str_$replace_str_"另请注意,您需要双引号才能扩展 var。 -
@fedorqui 下划线作为分隔符?
-
@AvinashRaj 是的,您可以定义它,以及
|或其他。只需使用非常基本的echo "hello" | sed 's_hello_bye_'即可查看。甚至sed 's?hello?bye?'也有效。 -
通过转义特殊字符来准备字符串 $replace_str(在临时变量中使用先前的 sed)。如果只有数字和 /,您可以使用另一个 s/// 分隔符,如 s### 或 s:::
-
@fedorqui:我也试过用双引号。它是一个日期参数,所以我必须使用正斜杠作为首选分隔符。反斜杠也有转机吗?甚至尝试过这种方式: sed 's/***/.
echo $replace_str|sed 's/^\(.\{2\}\)/\1\//'/' 其中命令以 mm/yyyy 格式获取日期。请帮忙!!
标签: bash parameters sed