Ich möchte eine Reihe von Zeichen durch entsprechende Zeichen aus einer anderen Reihe ersetzen, etwa so:
original set: ots
"target" set: u.x
foobartest → fuubar.ex.
Übersetzungen / Transliterationen wie diese sind die Spezialität des tr
Befehls:
$ echo 'foobartest' | tr 'ots' 'u.x'
fuubar.ex.
Leider wird tr
das Ändern von Dateien an Ort und Stelle nicht unterstützt, wie dies der sed
Fall ist.
Ich würde es gerne verwenden, sed
damit ich das Rad des Jonglierens von temporären Dateien nicht neu erfinden muss.
tr
(Richtig) Ignoriert die Rekursion in den Ersatzsätzen: echo 'abc' | tr ab bx
→ bxc
. Bei einer primitiven Lösung wird dies möglicherweise abgeschlachtet, xxc
da die Übersetzung erneut auf bereits übersetzte Zeichen angewendet wird.
sed
Gegensatz zu GNU tr
kann Multi-Byte-Zeichen transkribieren)