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 y
ersetzt 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
.