Vorrei sostituire un set di caratteri con caratteri corrispondenti di un altro set, qualcosa del genere:
original set: ots
"target" set: u.x
foobartest → fuubar.ex.
Traduzioni / traslitterazioni come questa sono la specialità del tr
comando:
$ echo 'foobartest' | tr 'ots' 'u.x'
fuubar.ex.
Sfortunatamente tr
non supporta la modifica dei file sul posto come sed
fa.
Vorrei utilizzarlo in sed
modo da non dover reinventare la ruota dei file temporanei di giocoleria.
tr
(correttamente) ignora la ricorsione nei set di sostituzione: echo 'abc' | tr ab bx
→ bxc
. Una soluzione primitiva potrebbe macellarla xxc
perché riapplica la traduzione ai caratteri che sono già stati tradotti.
sed
contrariamente a GNU tr
può traslitterare caratteri multibyte)