Die wahre Stärke von Linux besteht darin, dass es viele Programme/Dienstprogramme gibt, die erstellt wurden, um unser Leben einfacher zu machen. Wenn Sie viele Shell-Skripte in Ihrer Umgebung schreiben, ist diese Reihe von Programmen praktisch, wenn Sie diese Programme verwenden, um Ihre Eingabe oder Ausgabe in Ihren Skripten zu manipulieren. Ein solches Dienstprogramm ist tr
, was für übersetzen steht . Wie der Name schon sagt, wird der Befehl tr verwendet, um Zeichen von der Standardeingabe zu übersetzen, zu komprimieren und zu löschen und auf die Standardausgabe in Linux- und Unix-ähnlichen Betriebssystemen zu schreiben.
In diesem Artikel lernen wir die Verwendung des tr-Befehls anhand praktischer Beispiele kennen. Am Ende dieser Anleitung werden Sie mit der Verwendung des tr-Befehls vertraut sein und wissen, in welchem Szenario die Verwendung dieses Befehls von Vorteil wäre.
tr Befehlssyntax und Hilfe
Informationen zur Syntax und Liste der Argumente, die der Befehl tr unterstützt, finden Sie in der Manpage oder verwenden Sie --help
Flag mit tr
Befehl.
$ man tr
$ tr --help
Der tr
Der Befehl akzeptiert zwei Argumente in Form von SET1 und SET2 wobei SET1 werden Eingabezeichen sein, die durch Zeichen in SET2 übersetzt werden . Wenn bestimmte Flags an den tr-Befehl übergeben werden, kann optional SET2 verwendet werden.
tr [OPTION]… SET1 [SET2]
Beispiel 1 - Übersetzen mit dem Befehl tr
Unten ist ein einfaches Beispiel für die Verwendung von tr
Befehl. Der tr
Befehl wird mit dem echo
geleitet Befehl und Kleinbuchstaben "ost" wird in Großbuchstaben "OST" umgewandelt .
Die Konvertierung erfolgt hier basierend auf der Position der Zeichen in zwei Sätzen. Das erste Zeichen in SET1 wird durch das erste Zeichen in SET2 ersetzt (o->O ), ähnlich für alle Zeichen (s->S ,t->T ).
$ echo "ostechnix" | tr "ost" "OST"
OSTechnix
Empfohlene Lektüre:
- Bash-Echo-Befehl mit Beispielen in Linux erklärt
Beispiel 2 - Zeichensätze und Sonderzeichen
Der tr
Befehl bietet die Verwendung von Zeichensätzen, was die Konvertierung sehr einfach macht. Der tr
Der Befehl kann auch Sonderzeichen interpretieren wie (\n
,\t
,\v
), die mit verschiedenen Zeichen übersetzt werden können.
Schauen wir uns an, wie man den Zeichensatz verwendet. Im folgenden Beispiel habe ich Zeichenfolgen, Ganzzahlen und Satzzeichen. Satzzeichen werden durch Punkte ersetzt (.
) mit "[:punct:]"
Zeichensatz.
$ echo "Ubuntu 20.04 #$%^" | tr "[:punct:]" "."
Beispiel 3 – Groß-/Kleinschreibung
Wenn Sie mit Zeichenketten arbeiten, möchten Sie vielleicht die Groß-/Kleinschreibung der Zeichenkette von klein nach groß oder umgekehrt ändern. Mit dem tr
Befehl, können Sie die Groß-/Kleinschreibung auf verschiedene Arten durchführen.
Bei der ersten Möglichkeit können Sie a eingeben bis z in Satz 1 und Satz 2.
$ echo "ostechnix" | tr "abcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
OSTECHNIX
Bitte beachten Sie, dass dies kein bevorzugter Weg ist.
Anstatt alle Zeichen einzutippen, können Sie auch Bereiche verwenden (z. B. a-z , A-Z ).
$ echo "ostechnix" | tr "a-z" "A-Z" # Klein- in Großbuchstaben
OSTECHNIX
$ echo "OSTECHNIX" | tr "A-Z" "a-z" # Groß- zu Kleinbuchstaben
osttechnix
Anstelle der beiden oben genannten Methoden können auch die Zeichenklassen verwendet werden.
$ echo "OSTECHNIX" | tr "[:obere:]" "[:untere:]"
osttechnix
$ echo "ostechnix" | tr "[:untere:]" "[:obere:]"
OSTECHNIX
Beispiel 4 - Zeichen löschen
Es gibt eine Reihe optionaler Argumente, die tr
unterstützt verschiedene Aktionen auszuführen.
Ein solches Flag ist "-d
oder --delete
" wodurch Zeichen gelöscht werden, die in SET1 angegeben sind.
Unten ist die Eingabe, wo ich drei IPs mit Leerzeichen in jeder Zeile und Tabulatoren (2) in der dritten Zeile habe. Jetzt mit dem -d
Flagge können Sie die Leerzeichen löschen.
Führen Sie den folgenden Befehl aus, der alle Leerzeichen löscht. Ein wichtiger Punkt, der hier zu beachten ist, ist, dass Tabulatoren nicht entfernt werden, sondern nur Leerzeichen werden entfernt.
$ tr -d " "Wenn Sie sowohl Leerzeichen als auch Tabulatoren (horizontale Leerzeichen) entfernen möchten, können Sie den
"[:blank:]"
verwenden Zeichensatz.$ tr -d "[:blank:]"Sie können auch den
"[:space:]"
verwenden Zeichensatz zum Löschen horizontaler und vertikaler Leerzeichen.$ tr -d "[:Leerzeichen:]"Beispiel 5 – Squeeze-Wiederholungen
Wenn das Flag „
-s
oder--squeeze-repeats
" verwendet wird, werden die in SET1 angegebenen wiederholten Zeichen durch ein einzelnes Vorkommen des Zeichens ersetzt. Im folgenden Beispiel können Sie sehen, dass ich 4 gleich (=
verwendet habe ) Schild. Jetzt-s
ersetzt 4 (=
) mit 1 (=
).$ echo "Produktions-IP ====192.168.1.10" | tr -s "="Produktions-IP =192.168.1.10Unten ist ein weiteres Beispiel, in dem Zeilenumbrüche (
\n
) gequetscht werden.$ cat tr_test.txt | tr -s "\n"Beispiel 6 – Komplement
Wenn das
-c
flag verwendet wird, führt es eine inverse Übersetzung für die gegebene Menge durch. Im folgenden Beispiel übersetzt tr alle Alphabete in"*"
normalerweise. Aber wenn-c
verwendet wird, wird die Operation invertiert. Außer Buchstaben werden alle anderen Zeichen durch"*"
ersetzt .$ echo "Mitarbeiternummer ist 1267890" | tr -c "[:alpha:]" "*"Sie können dies mit anderen Flags kombinieren, um bestimmte Ergebnisse zu erzielen. Zum Beispiel wenn Sie mit dem
-d
kombinieren Flag, wird eine umgekehrte Löschoperation durchgeführt.$ echo "Mitarbeiternummer ist 1267890" | tr -cd "[:Ziffer:]"Hinweis: Aus dem obigen Beispiel können Sie sehen, dass das Zeilenumbruchzeichen ebenfalls übersetzt/gelöscht wird. Wenn Sie diese Methode verwenden, beachten Sie diesen Punkt und fahren Sie fort.
Beispiel 7 – Ausgabe umleiten
In allen vorherigen Abschnitten haben wir die Eingabe aus der Datei gelesen und einige Verarbeitungen mit dem
tr
durchgeführt Befehl und die Ausgabe wird an das Terminal gesendet. Wenn Sie die Ausgabe in eine Datei statt in ein Terminal umleiten möchten, verwenden Sie den Umleitungsoperator.$ tr -s "\n"neue_tr_test.txt $ cat neue_tr_test.txt
Verwandte Lektüre:
- Bash-Umleitung mit Beispielen erklärt
Schlussfolgerung
In diesem Artikel habe ich Sie durch die Verwendung von
tr
geführt Befehl. Unter Linux gibt es immer mehrere Möglichkeiten, dasselbe zu erreichen. Was wir in diesem Artikel gezeigt haben, kann auch mit anderen Programmen wiesed
erreicht werden ,awk
, etc. Aber die Kenntnis dieser Befehle und verschiedener Möglichkeiten wird Ihnen helfen, die richtige Situation zu entscheiden, um den richtigen Befehl/das richtige Programm zu verwenden.