Mit dem tr-Befehl können wir bestimmte Zeichen durch andere ersetzen oder sie einfach aus dem Text entfernen. Diese Funktionen sind nützlich, um Textmanipulationen durchzuführen oder bestimmte Formatierungen zu ändern.

    Syntax

    tr [OPTION]... SET1 [SET2]

    Hierbei steht SET1 für die zu ersetzenden Zeichen und SET2 für die Zeichen, die anstelle von SET1 eingesetzt werden sollen. Beachte, dass SET2 optional ist. Wenn SET2 nicht angeben, wird tr die Zeichen in SET1 einfach löschen.

    Einige häufig verwendete Optionen sind:

    • -d oder --delete : Löscht Zeichen aus dem Text.
    • -s oder --squeeze-repeats: Reduziert aufeinanderfolgende identische Zeichen zu einem einzigen Zeichen.
    • -c oder -C oder --complement: Ersetzt alle Zeichen außer den angegebenen Zeichen.
    • -t oder --truncate-set1: Begrenzt den Übersetzungsvorgang auf die Länge von SET1.

    In den meisten Fällen repräsentieren die Zeichen sich selbst. Es gibt jedoch einige interpretierte Folgen, die eine spezielle Bedeutung haben (u.a. Steuerzeichen oder Zeichenklassen). Hier sind einige der häufig verwendeten Steuerzeichen:

    • \n: Steht für eine neue Zeile (en. new line).
    • \r: Steht für “Wagenrücklauf” (en. carriage return).
    • \t: Steht für einen Tabulator (en. Tab).
    • ZEICH1-ZEICH2: Steht für alle Zeichen von ZEICH1 bis ZEICH2 in aufsteigender Reihenfolge.

    Hier sind einige der häufig verwendeten Zeichenklassen:

    • [:alnum:]: Steht für alle Buchstaben und Ziffern.
    • [:alpha:]: Steht für alle Buchstaben.
    • [:blank:]: Steht für alle horizontalen Leerzeichen/Tabulatoren.
    • [:cntrl:]: Steht für alle Steuerzeichen.
    • [:digit:]: Steht für alle Ziffern.
    • [:lower:]: Steht für alle Kleinbuchstaben.
    • [:space:]: Steht für alle horizontalen oder vertikalen Leerzeichen/Tabulatoren.
    • [:upper:]: Steht für alle Großbuchstaben.

    Beispiele

    Überschreiben von Zeichen

    $ echo "Hello, World!" | tr 'o' 'x'
    Hellx, Wxrld!
    $

    In diesem Beispiel wird das Zeichen o durch das Zeichen x ersetzt.

    Löschen von Zeichen

    Der tr-Befehl kann auch verwendet werden, um bestimmte Zeichen aus einem Textstrom zu entfernen, mit der Option -d.

    $ echo "Hello, World!" | tr -d 'l'
    Heo, Word!
    $

    In diesem Beispiel wird das Zeichen l aus dem Textstrom entfernt, wodurch nur Heo, Word! zurückbleibt.

    Kleinbuchstaben in Großbuchstaben umzuwandeln oder umgekehrt

    Um Kleinbuchstaben in Großbuchstaben umzuwandeln oder umgekehrt können wir SET-folgen verwenden oder Zeichenklassen:

    $ echo "Hello, World!" | tr 'a-z' 'A-Z'
    HELLO, WORLD!
    $

    Hier wird a-z für SET1 und A-Z für SET2 verwendet. Der tr-Befehl durchsucht den Textstrom nach Kleinbuchstaben (a bis z) und ersetzt sie durch die entsprechenden Großbuchstaben (A bis Z).

    $ echo "Hello, World!" | tr '[:lower:]' '[:upper:]'
    HELLO, WORLD!
    $ 

    Hier werden die Zeichenklassen [:lower:] und [:upper:] verwendet, um alle Kleinbuchstaben in der Eingabezeichenkette in Großbuchstaben umzuwandeln. Der tr-Befehl sucht nach Zeichen, die zur Klasse [:lower:] gehören, und ersetzt sie durch die entsprechenden Zeichen aus der Klasse [:upper:].

    Löschen von Steuerzeichen

    Steuerzeichen sind nicht druckbare Zeichen wie Tabulatoren (\t) oder Zeilenumbrüche (\n).

    $ echo -e "Hello\tWorld\n" 
    Hello	World
    
    $ echo -e "Hello\tWorld\n" | tr -d '\t\n'
    HelloWorld
    $

    Links