Tr Kommando
- Mit
tr
können Zeichen ersetzt, komprimiert oder gelöscht werden.
tr [option]... SET1 [SET2]
-
tr
akzeptiert zwei Zeichensätze SET1 und SET2, in der Regel mit der gleichen Länge, und ersetzt die Zeichen des ersten Satzes durch die entsprechenden Zeichen des zweiten Satzes.
- Ein SET ist im Grunde eine Zeichenkette, einschließlich Sonderzeichen als interpretierte Folgen mit Backslash.
Inhaltsverzeichnis
Zeichen ersetzen
-
$ echo "123abcABC" | tr "abc" "xyz"
oder
-
$ echo "123abcABC" | tr "a-c" "x-z"
- ergibt
123xyzABC
Gross/Klein umwandeln:
-
$ echo "123abcABC" | tr "a-z" "A-Z"
- ergibt
123ABCABC
Mit -c (--complement) Option werden alle Zeichen ausser jenen in SET1 ersetzt:
-
$ echo "123abcABC" | tr -c "abc" "0"
- ergibt
000abc0000
Das überzälige 0 am Schluss ist das unsichtbare \n
des echo
Kommandos. Es gibt 2 Möglichkeiten das zu verhindern:
$ echo -n "123abcABC" | tr -c "abc" "0"
- oder
$ echo "123abcABC" | tr -c "abc\n" "0"
- ergibt
000abc000
Zeichen komprimieren -s (--squeeze-repeats)
-s
ersetzt eine Folge von wiederholtem Auftreten eines Zeichens durch ein (anderes) Zeichen.
Nur mit SET1 wird das Zeichen in SET1 komprimiert:
-
$ echo "SI Wiki" | tr -s " "
- ergibt
SI Wiki
mit SET1 und SET2 werden die Zeichen aus SET1 komprimiert und mit SET2 ersetzt:
-
$ echo "SI Wiki" | tr -s " " ":"
- ergibt
SI:Wiki
Zeichen löschen -d (--delete)
Alle Vorkommen der Zeichen aus SET1 werden gelöscht.
-
$ echo "SI Wiki" | tr -d " i"
- ergibt
SIWk
Einige Beispiele
Zufallszahl erzeugen
-
$ tr -cd 0-9 </dev/urandom | head -c 7
Liest aus /dev/urandom, bildet durch Komplement alles Nicht-Zahlen (-c), löscht alle diese Nicht-Zahlen (-d), und gibt die ersten 7 Zeichen (head -c 7) davon aus.
Jedes Wort im Satz auf eine neue Zeile
-
$ echo "Jedes Wort im Satz auf eine neue Zeile" | tr -cs [:alnum:] "\n"
Sammelt das Komplement (-c) aller alphanumerischen Zeichen und ersetzt und komprimiert diese Menge nicht-alphanumerischer Zeichen durch ein Newline.
Alle leeren Zeilen einer Datei löschen
-
$ tr -s "\n" < eingabedatei.txt > ausgabedatei.txt
Liest die eingabedatei.txt (<), wandelt alle mehrfach hintereinander vorkommenden Newlines in ein einzelnes Newline (-s) und schreibt das Ergebnis in die ausgabedatei.txt (>).