Я хотел бы заменить набор символов соответствующими символами из другого набора, примерно так:
original set: ots
"target" set: u.x
foobartest → fuubar.ex.
Подобные переводы / транслитерации являются специальностью trкоманды:
$ echo 'foobartest' | tr 'ots' 'u.x'
fuubar.ex.
К сожалению tr, не поддерживает изменение файлов на месте, как это sedделает.
Я хотел бы использовать, sedчтобы мне не пришлось заново изобретать колесо жонглирования временными файлами.
tr(правильно) игнорирует рекурсию в наборах замены: echo 'abc' | tr ab bx→ bxc. Примитивное решение может привести к этому, xxcпотому что оно повторно применяет перевод к уже переведенным символам.
sedотличие от GNU trможет транслитерировать многобайтовые символы)