Android

Tr Befehl in Linux mit Beispielen

Wichtige CMD-Befehle!

Wichtige CMD-Befehle!

Inhaltsverzeichnis:

Anonim

tr ist ein Befehlszeilendienstprogramm 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ß- in Kleinbuchstaben und das Ersetzen und Entfernen von Grundzeichen ausführen. In der Regel wird es in Kombination mit anderen Befehlen über Piping verwendet.

In diesem Tutorial zeigen wir Ihnen tr von praktischen Beispielen und detaillierten Erklärungen der gebräuchlichsten Optionen, wie Sie den Befehl tr .

Verwendung des Befehls tr

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

tr OPTION… SET1

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

Ein SET ist im Grunde eine Zeichenfolge, einschließlich der Sonderzeichen mit umgekehrten Schrägstrichen.

Im folgenden Beispiel ersetzt tr alle Zeichen aus der Standardeingabe (linuxize), indem es die Zeichen aus der ersten Gruppe mit den übereinstimmenden Zeichen aus der zweiten Gruppe abbildet.

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

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

reduxeze

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

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

Sie können verwenden:

echo 'linuxize' | tr 'ln' 'w-z'

Wenn die Option -c ( --complement ) verwendet wird, ersetzt tr alle Zeichen, die nicht in SET1 enthalten sind.

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 Ausgabe oben ein sichtbares Zeichen mehr als die Eingabe. Dies liegt daran, dass der Befehl echo ein unsichtbares Zeilenumbruchzeichen ausgibt, das auch durch y . Verwenden Sie die Option -n , um eine Zeichenfolge ohne neue Zeile -n .

Die Option -d ( --delete ) weist tr an, die in SET1 angegebenen Zeichen zu löschen. Geben Sie beim Löschen von Zeichen ohne Drücken nur einen Satz an.

Mit dem folgenden Befehl werden die Zeichen l , i und z :

echo 'Linuxize' | tr -d 'liz'

Das L Zeichen wird nicht gelöscht, da die Eingabe ein L Großbuchstaben enthält, während das l Zeichen im SET in Kleinbuchstaben geschrieben ist.

Lnuxe

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

Im folgenden Beispiel entfernt tr die wiederholten Leerzeichen:

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

GNU \ Linux

Bei Verwendung von SET2 wird die in SET1 angegebene Zeichenfolge durch SET2 ersetzt.

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

GNU_\_Linux

Die Option -t ( --truncate-set1 ) zwingt tr , SET1 vor der weiteren Verarbeitung auf die Länge von SET2 zu kürzen.

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

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

Die Ausgabe zeigt, dass das Zeichen e aus SET1 mit dem letzten Zeichen von SET2 übereinstimmt, nämlich 2 :

Linux iz2

Verwenden Sie jetzt denselben Befehl mit der Option -t :

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

Linux ize

Sie können sehen, dass die letzten drei Zeichen von SET1 entfernt wurden. SET1 wird 'ab', die gleiche Länge wie SET2, und es wird kein Ersatz vorgenommen.

Kombinieren von Optionen

Mit dem Befehl tr können Sie auch seine Optionen kombinieren. Der folgende Befehl ersetzt beispielsweise zuerst alle Zeichen mit Ausnahme von i durch 0 und drückt dann die wiederholten 0 Zeichen aus:

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

0i0i0

Beispiele für Tr-Befehle

In diesem Abschnitt werden einige Beispiele für häufige Verwendungen des Befehls tr .

Konvertieren Sie Kleinbuchstaben in Großbuchstaben

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

echo 'Linuxize' | tr '' ''

LINUXIZE

Anstelle von Zeichenklassen können Sie auch Bereiche verwenden:

echo 'Linuxize' | tr 'az' 'A-Z'

Um Groß- und Kleinschreibung umzuwandeln, tauschen Sie einfach die Stellen der Mengen.

Entfernen Sie alle nicht numerischen Zeichen

Der folgende Befehl entfernt alle nicht numerischen Zeichen:

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

steht für alle Ziffern und mit der Option -c alle nicht-Ziffern entfernt. Die Ausgabe sieht folgendermaßen aus:

1234567890

Setzen Sie jedes Wort in eine neue Zeile

Um jedes Wort in eine neue Zeile einzufügen, müssen alle nicht alphanumerischen Zeichen übereinstimmen und durch eine neue Zeile ersetzt werden:

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

GNU is an operating system

Leerzeilen entfernen

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

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

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

$PATH Verzeichnisse in einer separaten Zeile $PATH

Die Umgebungsvariable $PATH ist eine durch Doppelpunkte getrennte Liste von Verzeichnissen, die der Shell mitteilt, welche Verzeichnisse nach ausführbaren Dateien durchsucht werden sollen, wenn Sie einen Befehl eingeben.

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

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

/usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin

Fazit

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

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

tr terminal