是否可以在同一命令中将乘法模式更改为不同的值? 假设我有
A B C D ABC
我想将每个 A 更改为 1,每个 B 更改为 2,每个 C 更改为 3
所以输出将是
1 2 3 D 123
因为我有 3 种模式要更改,所以我想避免分别替换它们。 我以为会有类似的东西
sed -r s/'(A|B|C)'/(1|2|3)/
当然,这只是将 A 或 B 或 C 替换为 (1|2|3)。 我应该提一下,我的真实模式比那更复杂......
谢谢!
最佳答案
在 sed
中很简单:
sed 's/WORD1/NEW_WORD1/g;s/WORD2/NEW_WORD2/g;s/WORD3/NEW_WORD3/g'
您可以在同一行上用;
分隔多个命令
更新
可能这太简单了。 NeronLeVelu指出上述命令可能会导致不需要的结果,因为第二次替换甚至可能触及第一次替换的结果(依此类推)。
如果您关心这一点,可以使用 t
命令避免这种副作用。 t
命令分支到脚本的末尾,但前提是确实发生了替换:
sed 's/WORD1/NEW_WORD1/g;t;s/WORD2/NEW_WORD2/g;t;s/WORD3/NEW_WORD3/g'
关于bash - 替换多个模式,但不是用相同的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29606527/