【问题标题】:Replace a string containing backslash using sed [duplicate]使用 sed [重复] 替换包含反斜杠的字符串
【发布时间】:2023-03-20 09:30:02
【问题描述】:

我想使用 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 值中没有反斜杠!

标签: bash sed


【解决方案1】:

你也可以不使用,而只是像这样使用

while read -r; do
    echo "${REPLY//SERVICE/$service}"
done

【讨论】:

    猜你喜欢
    • 2018-01-29
    • 2018-05-08
    • 2019-03-28
    • 1970-01-01
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多