Я хотів би замінити набір символів відповідними символами з іншого набору, приблизно так:
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
може транслітерувати багатобайтові символи)