Chciałbym zastąpić zestaw znaków odpowiednimi znakami z innego zestawu, coś takiego:
original set: ots
"target" set: u.x
foobartest → fuubar.ex.
Tłumaczenia / transliteracje takie jak ta są specjalnością tr
polecenia:
$ echo 'foobartest' | tr 'ots' 'u.x'
fuubar.ex.
Niestety tr
nie obsługuje zmiany plików w miejscu, tak jak sed
robi.
Chciałbym użyć, sed
więc nie muszę ponownie wymyślać koła plików tymczasowych żonglerki.
tr
(poprawnie) ignoruje rekurencję w zestawach zastępczych: echo 'abc' | tr ab bx
→ bxc
. Prymitywne rozwiązanie może to zaszkodzić, xxc
ponieważ ponownie stosuje tłumaczenie do znaków, które już zostały przetłumaczone.
sed
przeciwieństwie do GNU tr
potrafi transliterować znaki wielobajtowe)