【问题标题】:Bash replace content between two delimitersBash 替换两个分隔符之间的内容
【发布时间】:2020-10-30 05:10:52
【问题描述】:

我有这个字符串:

test=test1&test2=test3&test3

我的问题是:如何在 Bash 上将 = 和 & 之间的所有单词替换为替换?

所以我可以得到这样的输出:

test=replaced&test2=replaced&test3

提前致谢。

【问题讨论】:

  • 1.编写一个正则表达式以匹配 = 字符之后的任何字符,但 & 字符除外。 2. 使用sed
  • 欢迎来到 SO,在 SO 上,我们鼓励用户展示他们为解决自己的问题所做的努力,所以请在您的问题中添加相同的内容,然后让我们知道。
  • 嗨@KamilCuk 感谢您的回答,我是 sed 命令的新手。我怎么能用它来做你解释的事情。再次感谢

标签: bash sed replace scripting character


【解决方案1】:

您可以将 bash“扩展 glob”用于纯 bash 解决方案,使用替代 (${var//} 运算符。

X='test=replaced&test2=replaced&test3'
shopt -s extglob
echo ${X//=*([!&])&/=replaced&}

【讨论】:

    【解决方案2】:

    使用sed。搜索以= 开头并以非& 符号继续的字符串,将其替换为=replaced

    echo 'test=test1&test2=test3&test3' | sed 's/=[^&]*/=replaced/g'
    

    /g 表示全局,没有它,只有第一个匹配项会被替换。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 2011-12-22
      • 1970-01-01
      • 2020-07-29
      • 2012-09-10
      相关资源
      最近更新 更多