小编典典

如何使用 sed 一次交换基于模式的文本?

all

假设我有 ‘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是一个流编辑器,并且它的替换是贪婪的,我认为我需要为此使用一些脚本语言。


阅读 82

收藏
2022-04-11

共1个答案

小编典典

也许是这样的:

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

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

2022-04-11