假设我有 'abbc' 字符串并且我想替换:

  • ab -> bc
  • bc -> ab

  • 如果我尝试两次替换,结果不是我想要的:
    echo 'abbc' | sed 's/ab/bc/g;s/bc/ab/g'
    abab
    

    那么我可以使用什么 sed 命令来替换如下所示?
    echo abbc | sed SED_COMMAND
    bcab
    

    编辑 :
    实际上文本可能有 2 个以上的模式,我不知道我需要多少个替换。由于有一个答案说 sed 是一个流编辑器,它的替换是贪婪的,我认为我需要为此使用一些脚本语言。

    最佳答案

    也许是这样的:

    sed 's/ab/~~/g; s/bc/ab/g; s/~~/bc/g'
    

    ~ 替换为您知道不会出现在字符串中的字符。

    关于replace - 如何用sed一次替换多个模式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26568952/

    10-13 08:15