我想用另一组中的相应字符替换一组字符,如下所示:
original set: ots
"target" set: u.x
foobartest → fuubar.ex.
这样的翻译/音译是tr
命令的特长:
$ echo 'foobartest' | tr 'ots' 'u.x'
fuubar.ex.
不幸的是,tr
它不支持就地更改文件sed
。
我想使用它,sed
所以我不必重新发明处理临时文件的方式。
自问这个问题,因为我似乎找不到“ sed翻译字符”的任何结果。magic关键字最终是“音译”,但我认为值得使此功能尽可能容易找到。
—
n.st
尝试实现此变通办法时要记住的几点:(
—
n.st
tr
正确)忽略替换集中的递归:echo 'abc' | tr ab bx
→ bxc
。一个原始的解决方案可能会避免这种情况,xxc
因为它会将翻译重新应用于已经翻译过的字符。
如果您想要另一种可能性:perl可以翻译,并且-i和(除非是古老的)多字节。不是POSIX,但很常见。
—
dave_thompson_085