tr

Aus Mikiwiki
Zur Navigation springen Zur Suche springen

Der Shell-Befehl tr (transliterate) wandelt Zeichen um. Dabei wird von der Standardeingabe (stdin) gelesen und auf die Standardausgabe (stdout) geschrieben. Jedem Zeichen aus dem ersten Argument wird sein entsprechender Gegenpart aus dem zweiten Argument zugeordnet.

Verwendung

Alle "e" in "petronella" werden durch "a" ersetzt.

$ echo petronella | tr 'e' 'a'

In jeder Zeile wird ":" durch "\012" (end of line-Zeichen) ersetzt. Hier werden die PATH-Angaben untereinander angegeben.

$ echo $PATH | tr ':' '\012'

In jeder Zeile wird ":" durch "\012" (end of line-Zeichen) ersetzt. Hier werden die PATH-Angaben untereinander sortiert angegeben. Ausserdem werden doppelte Zeilen eliminiert.

$ echo $PATH | tr ':' '\012' | sort | uniq

Umwandlung aller Zeichen aus Zeichenfolge 1 (a-z) der Datei "file" in die Zeichen der Zeichenfolge 2 (A-Z), hier also Umwandlung aller Kleinbuchstaben in Grossbuchstaben.

$ tr a-z A-Z < file
oder
$ tr [:lower:] [:upper:] < file

Umwandlung aller a aus der Datei "input" zu x, aller b zu y und aller c zu z. Das Ergebnis wird in die Datei "output" geschrieben.

$ tr abc xyz < input > output

Umwandlung aller a, b und c in Datei "file" zu z.

$ tr abc z < file

Löschen aller Zeichen aus Zeichenfolge 1 (b-h) in Datei "file".

$ tr -d b-h < file
oder
$ tr -d '[b-h]' < file

Zeilenweise Ausgabe aller Zeichen aus Zeichenfolge 1 (b-h), die in Datei "file" enthalten sind.

$ tr -cd '[b-h]\012' < file
oder
$ tr -cd '[b-h]\n' < file

Löschen der Zeilenschaltungen in Datei "file1" (Windowstext) und Ausgabe des Ergebnisses in Datei "file2" (Linuxtext).

$ tr -d "\015" < file1 > file2
oder
$ tr -d '\r' < file1 > file2

Löschen aller Zeichen ausser Leerzeichen, Gross- und Kleinbuchstaben in Datei "file".

$ tr -c -d 'A-Z a-z' < file

Löschen mehrfach hintereinander vorkommende Zeilenumbrüche und Ersetzen durch einfache Zeilenumbrüche in Datei "file".

$ tr -s '\012' '\012' < file

Löschen doppelter Leerzeichen und Tabulatoren und Ersetzung durch einfache Leerzeichen in Datei "file".

$ tr -s [:blank:] ' ' < file

Umbenennen aller Dateien im aktuellen Verzeichnis (für den Benutzer sichtbar) sodass der neue Dateiname anstatt Leerzeichen neu Unterstriche enthält.

$ for i in *; do mv -v "$i" $(echo $i | tr ' ' '_'); done

Beispiele

...

$ tr ad AD <<<HERE
  abcdef
HERE
AbcDef

...

$ VARIABLE=abcdef
$ echo $VARIABLE | tr [a-z] [A-Z]
ABCDEF

...

$ VARIABLE=abcdef
$ tr [a-z] [A-Z] <<<HERE
  $VARIABLE
HERE
ABCDEF

...

$ VARIABLE=abcdef
$ echo $VARIABLE > /tmp/testfile
$ tr [a-z] [A-Z] /tmp/testfile

Ermittlung der Wörter, die sich in der Datei "file" befinden. Dabei werden zuerst alle Grossbuchstaben durch Kleinbuchstaben ersetzt. Danach werden "Nonletters" in Zeilenende-Zeichen ("\n") umgewandelt. Schliesslich werden die Wörter mit sort sortiert und dabei mehrfach auftauchende unterdrückt.

$ cat file | tr A-Z a-z | tr -c a-z\' '\n' | sort -u

Weblinks

Herausgeber Sprache Webseitentitel Anmerkungen
Wikipedia eng Tr (Unix)wbm Enzyklopädischer Artikel