使用 sed [重复] 替换包含反斜杠的字符串
Posted
技术标签:
【中文标题】使用 sed [重复] 替换包含反斜杠的字符串【英文标题】:Replace a string containing backslash using sed [duplicate] 【发布时间】:2013-06-18 22:49:37 【问题描述】:我想使用 sed 将变量 SERVICE 替换为包含反斜杠的字符串 $service。我做了以下
sed "s/SERVICE/`printf '%q' "$service"`/g"
使用这个我得到替换的字符串为
b_a^c_b_\]Wdd[]X\[X\[W206C?2@,.\\,A@2AW!w6"|
随心所欲
b_a^c_b_\]Wdd[]X\[X\[W206C?2@,.\,A@2AW!w6"|
还有其他方法吗。 PS(字符串$service有很多不同的特殊字符)
【问题讨论】:
$service 的价值是什么? 如何设置服务变量的值?您的示例对我来说很好用(我做了 service="a\a",并且替换的字符串中只出现了一个反斜杠)。 尝试使用单引号 $service 的值为b_a^c_b_]Wdd[]X[X[W206C?2@,.,A@2AW!w6"|
但是你的 $service 值中没有反斜杠!
【参考方案1】:
你也可以不使用sed,而只是像这样使用bash:
while read -r; do
echo "$REPLY//SERVICE/$service"
done
【讨论】:
以上是关于使用 sed [重复] 替换包含反斜杠的字符串的主要内容,如果未能解决你的问题,请参考以下文章