Je voudrais remplacer un ensemble de caractères par des caractères correspondants d'un autre ensemble, quelque chose comme ceci:
original set: ots
"target" set: u.x
foobartest → fuubar.ex.
Les traductions / translittérations comme celle-ci sont la spécialité de la trcommande:
$ echo 'foobartest' | tr 'ots' 'u.x'
fuubar.ex.
Malheureusement, trne prend pas en charge la modification des fichiers sur place comme le sedfait.
Je voudrais l'utiliser sedpour ne pas avoir à réinventer la roue de jongler avec les fichiers temporaires.
tr(correctement) ignore la récursivité dans les ensembles de remplacement: echo 'abc' | tr ab bx→ bxc. Une solution primitive pourrait supprimer cela xxccar elle réapplique la traduction aux caractères qui ont déjà été traduits.
sedcontrairement à GNU trpeut transliter des caractères multi-octets)