tr ist ein Befehlszeilenprogramm in Linux-und Unix-Systemen, das Zeichen aus der Standardeingabe übersetzt, löscht und komprimiert und das Ergebnis in die Standardausgabe schreibt.

Der Befehl tr kann Vorgänge wie das Entfernen wiederholter Zeichen, das Konvertieren von Großbuchstaben in Kleinbuchstaben und das Ersetzen und Entfernen grundlegender Zeichen ausführen. Typischerweise wird es in Kombination mit anderen Befehlen über Piping verwendet.,

In diesem Tutorial zeigen wir Ihnen anhand praktischer Beispiele und detaillierter Erklärungen der häufigsten Optionen, wie Sie den Befehl tr verwenden.

Verwendung des tr-Befehls #

Die Syntax für den Befehl tr lautet wie folgt:

tr OPTION... SET1 

tr akzeptiert zwei Zeichensätze, normalerweise mit derselben Länge, und ersetzt die Zeichen der ersten Sätze durch die entsprechenden Zeichen aus dem zweiten Satz.,

A SET ist im Grunde eine Zeichenfolge, einschließlich der speziellen Backslash-maskierten Zeichen.

Im folgenden Beispiel ersetzt tr alle Zeichen aus der Standardeingabe (linuxize), indem die Zeichen aus dem ersten Satz mit den übereinstimmenden Zeichen aus dem zweiten Satz zugeordnet werden.,

echo 'linuxize' | tr 'lin' 'red'

Jedes Vorkommen von l wird ersetzt durch r, i mit e und n mit d:

Die Zeichensätze können auch über Zeichenbereiche definiert werden., Zum Beispiel, anstatt zu schreiben:

echo 'linuxize' | tr 'lmno' 'wxyz'

Sie können verwenden Sie:

echo 'linuxize' | tr 'l-n' 'w-z'

Wenn -c (--complement) – option verwendet wird, tr ersetzt alle Zeichen, die nicht im SET1.

Im folgenden Beispiel werden alle Zeichen außer „li“ durch das letzte Zeichen aus dem zweiten Satz ersetzt:

echo 'linuxize' | tr -c 'li' 'xy'
liyyyiyyy

Wie Sie vielleicht bemerkt haben, hat die obige Ausgabe ein sichtbareres Zeichen als die Eingabe., Dies liegt daran, dass der Befehl echo ein unsichtbares Zeilenumbruchszeichen \n druckt, das ebenfalls durch yersetzt wird. Um eine Zeichenfolge ohne neue Zeile zurückzugeben, verwenden Sie die Option -n.

Die-d (--delete) Option teilttr Zeichen in SET1 angegeben zu löschen. Geben Sie beim Löschen von Zeichen ohne Quetschen nur einen Satz an.,

Der folgende Befehl entfernt l, i und z Zeichen:

echo 'Linuxize' | tr -d 'liz'

Das L Zeichen wird nicht gelöscht, da die Eingabe einen Großbuchstaben enthält L während das l Zeichen in der MENGE Kleinbuchstaben ist.

Lnuxe

Die Option -s (--squeeze-repeats) ersetzt eine Folge wiederholter Vorkommen durch den Zeichensatz im letzten SATZ.,

Im folgenden Beispiel entfernt tr die wiederholten Leerzeichen:

echo "GNU \ Linux" | tr -s ' '
GNU \ Linux

Bei Verwendung von SET2 wird die Reihenfolge des in SET1 angegebenen Zeichens durch SET2 ersetzt.

echo "GNU \ Linux" | tr -s ' ' '_'
GNU_\_Linux

Die -t (--truncate-set1) Option erzwingt tr, um SET1 vor der weiteren Verarbeitung auf die Länge von SET2 abzuschneiden.,

Wenn SET1 größer als SET2 ist, wird standardmäßig tr das letzte Zeichen von SET2 wiederverwendet. Hier ist ein Beispiel:

echo 'Linux ize' | tr 'abcde' '12'

Die Ausgabe zeigt, dass das Zeichen e von SET1 mit dem neuesten Zeichen von SET2 übereinstimmt, das 2:

Verwenden Sie jetzt denselben Befehl mit der -t Option:

echo 'Linux ize' | tr -t 'abcde' '12'
Linux ize

Sie können sehen, dass die letzten drei Zeichen des SET1 entfernt werden., SET1 wird ‚ab‘, die gleiche Länge wie SET2, und es wird kein Ersatz vorgenommen.

Optionen kombinieren #

Mit dem Befehl tr können Sie auch die Optionen kombinieren. Zum Beispiel ersetzt der folgende Befehl zuerst alle Zeichen außer i durch 0 und drückt dann die wiederholten 0 Zeichen zusammen:

echo 'Linux ize' | tr -cs 'i' '0'
0i0i0

Tr Command Examples #

In diesem im Folgenden werden einige Beispiele für gängige Verwendungen des Befehls tr.,

Kleinbuchstaben in Großbuchstaben umwandeln #

Das Konvertieren von Kleinbuchstaben in Großbuchstaben oder umgekehrt ist einer der typischen Anwendungsfälle des Befehls tr. entspricht allen Kleinbuchstaben und allen Großbuchstaben.

echo 'Linuxize' | tr '' ''
LINUXIZE

Anstelle von Zeichenklassen können Sie auch Bereiche verwenden:

echo 'Linuxize' | tr 'a-z' 'A-Z'

Um Großbuchstaben in Kleinbuchstaben umzuwandeln, wechseln Sie einfach die Stellen der Sätze.,

Alle nicht numerischen Zeichen entfernen #

Mit dem folgenden Befehl werden alle nicht numerischen Zeichen entfernt:

echo "my phone is 123-456-7890" | tr -cd 

steht für alle Ziffernzeichen und mit der Option -c werden alle nicht numerischen Zeichen entfernt.,sieht so aus:

1234567890

Setzen Sie jedes Wort in eine neue Zeile #

Um jedes Wort in eine neue Zeile zu setzen, müssen wir alle nicht alphanumerischen Zeichen abgleichen und durch eine neue Zeile ersetzen:

echo 'GNU is an operating system' | tr -cs '' '\n'
GNUisanoperatingsystem

Leerzeilen entfernen #

Um die leeren Zeilen zu löschen, drücken Sie einfach die sich wiederholenden Zeilenumbruchszeichen zusammen:

tr -s '\n' < file.txt > new_file.txt

Im obigen Befehl verwenden wir das Umleitungssymbol <, um den Inhalt des Befehls file.txt an tr zu übergeben., Die Umleitung > schreibt die Ausgabe des Befehls in new_file.txt.

Print $PATH-Verzeichnisse auf einer separaten Zeile #

$PATH Umgebungsvariable ist eine durch Doppelpunkt getrennte Liste von Verzeichnissen, teilt der shell mit, welche Verzeichnisse für die Suche nach ausführbaren Dateien, wenn Sie einen Befehl eingeben.,

Um jedes Verzeichnis in einer separaten Zeile zu drucken, müssen wir den Doppelpunkt (:) abgleichen und durch die neue Zeile ersetzen:

echo $PATH | tr ':' '\n'
/usr/local/sbin/usr/local/bin/usr/sbin/usr/bin/sbin/bin

tr ist ein Befehl zum Übersetzen oder Löschen von Zeichen.

Obwohl sehr nützlich, tr kann nur mit einzelnen Zeichen arbeiten. Für komplexere Mustervergleichs-und Zeichenfolgenmanipulationen sollten Sie sed oder awk .

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.