【问题标题】:Replacing all backslash with double backslashes in bash [duplicate]用bash中的双反斜杠替换所有反斜杠[重复]
【发布时间】:2021-04-20 06:15:01
【问题描述】:

我正在尝试用 bash 中的 \\ 替换所有 \,我正在这样做,但是 bash 陷入了一个永无止境的循环。我哪里错了?

myVar="${myVar//\//\\\\}"

【问题讨论】:

  • 哪个版本的 bash?我无法使用此代码重现无限循环。
  • @Barmar, ...就链接副本仅提供 sed 答案而不是 PE 答案而言,它让我觉得次优。
  • @CharlesDuffy 它显示了如何在变量中执行此操作,将其放入 sed 命令这一事实似乎是次要的。我试图找到一个更一般的骗子但失败了。
  • 嗯。我确实有一个基于 PE 的有效答案,但我认为它不属于以sed 为中心的链接副本,它与已有的不同。
  • 我欺骗的答案确实使用PE:${newstring//\\/\\\\}/g

标签: bash replace backslash


【解决方案1】:

您可以为此使用sed

echo "hello\world\hello\world" | sed 's/\\/\\\\/g'

输出:

hello\\world\\hello\\world

【讨论】:

  • 是的,但与parameter expansions 相比,使用sed 通常效率较低(对于带有小字符串的大量重复调用)。
  • 感谢资源,我不熟悉参数扩展。将阅读它!
  • 非常感谢,伙计!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-16
  • 2012-06-16
  • 1970-01-01
  • 2017-06-15
  • 1970-01-01
  • 2013-06-24
  • 1970-01-01
相关资源
最近更新 更多