tr, der alte Charakter switcheroo - Wie Man

tr, der alte Charakter switcheroo

Sie können das UNIX-Befehlszeilentool verwenden, um Zeichensätze zu ersetzen oder zu löschen. Das tr ist eine Abkürzung für translate, was auch für mich eine Dehnung ist. Ich schätze, Sie können es so betrachten, als würde man eine Gruppe von Zeichen in eine andere Gruppe von Zeichen übersetzen oder konvertieren, auch wenn dies manchmal bedeutet, sie alle zusammen loszuwerden.

Das tr-Tool ist irgendwie komisch, da es im Gegensatz zu den meisten Befehlszeilenprogrammen keine Dateinamen in der Eingabe akzeptiert. Es akzeptiert nur Standardeingaben. Dies ist ein ausgefallenes Gespräch für auf Ihrer Tastatur eingegebenen Text. Es liest diese Standardeingabe und schreibt das Ergebnis in die Standardausgabe, Ihren Bildschirm.

Während das auf der Oberfläche so einfach klingt, hat der Befehl tr einige Optionen, die ihn ziemlich mächtig machen. Mit diesen Optionen können Sie tr in einer Pipe oder direkt in einer Datei verwenden, um alle Arten von komplizierten Manövern auszuführen, wie Sie sie beispielsweise unter Windows mit PowerShell ausführen. Sobald Sie sich mit tr auseinandersetzen, wird es Ihnen Spaß machen, es in Ihren Skripts zu verwenden, das verspreche ich Ihnen.

8 Schritte insgesamt

Schritt 1: Ersetzen einer Zeichenfolge durch eine andere

Der Befehl tr ist praktisch, um eine Zeichenfolge durch eine andere zu ersetzen. Die grundlegende Syntax für dieses Manöver sieht folgendermaßen aus:

$$$ tr [Optionen] Zeichenfolge1 Zeichenfolge2 <Eingabedatei> Ausgabedatei

Jedes Zeichen in String1 wird durch das Zeichen an derselben Position in String2 ersetzt.

Wenn Sie beispielsweise die Buchstaben "abc" durch die Buchstaben "xyz" ersetzen möchten, führen Sie den Befehl wie folgt aus:

$$$ tr "abc" "xyz"

Sie können eine Pipe verwenden, um Ihren Eingabestrom bereitzustellen, der ungefähr wie folgt aussieht:

$ echo Ich mag Speck | tr wie "Liebe"
ich mag Speck

Lassen Sie uns den Ante ansprechen und ein Beispiel von etwas betrachten, das Sie tatsächlich tun möchten. Angenommen, Sie möchten Klammerzeichen in myfile.txt durch Klammern ersetzen. Führen Sie dazu den Befehl tr wie folgt aus:

$$$ tr ‘{}’ ’()’ <meineDatei.txt> MeineDatei2.txt

Der obige Befehl ersetzt alle geschweiften Klammern in myfile.txt durch Klammern und speichert die Ausgabe in einer neuen Datei namens myfile2.txt.

Schritt 2: Angeben eines Zeichenbereichs

Sparen Sie sich einige Tastatureingaben, indem Sie zum Angeben von Zeichenfolgen Bereiche verwenden. Beispielsweise können Sie Bereiche verwenden, um Kleinbuchstaben in ihre Großbuchstaben umzuwandeln.

$$$ tr a-z A-Z

Dieser Befehl hätte den gleichen Effekt, als würde jeder gesegnete Big Bird-Stil wie folgt angegeben:

$$$ tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ

Schritt 3: Angabe von Sonderzeichen

Sie können bestimmte Sonderzeichen mit einem umgekehrten Schrägstrich gefolgt von einer der folgenden Optionen angeben:

a Das "Alert" -Zeichen, das eine Benachrichtigung oder einen Alarm an das Terminal ausgibt

b Rücktaste

f Formularvorschub

n Newline

Wagenrücklauf

t Tab

v Registerkarte Vertikal

Wenn auf den umgekehrten Schrägstrich ein anderes Zeichen folgt, wird es direkt diesem Zeichen zugeordnet.

Stellen Sie sich vor, Sie haben eine Datei, myfile.txt, in der Sie die Kommas durch neue Zeilen ersetzen möchten. Mit tr können Sie dies ganz leicht erreichen:

$$$ tr ', ’ n' <meineDatei.txt> NeueDatei.txt

Wenn myfile.txt "Cookie Monster, Elmo, Bert, Ernie" enthielt, sieht es in newfile.txt jetzt so aus:

$$$ Keksmonster

Elmo

Bert

Ernie

Schritt 4: Festlegen von Zeichenklassen

Sie können spezielle Zeichenklassen wie z. B. Ziffern oder Leerzeichen definieren, indem Sie das folgende allgemeine Format verwenden:

$$$ [: class:]

Einige der möglichen Werte für class sind in der folgenden Tabelle aufgeführt. Bei diesen Werten handelt es sich eigentlich um POSIX-Standardzeichenklassen, was bedeutet, dass sie den Segen der UNIX-Götter erhalten haben und auf jeder Plattform funktionieren werden, die auch nur vage an UNIX erinnert.

alnum Alphanumerische Zeichen

Alpha alphabetische Zeichen

Leerzeichen Leerzeichen

cntrl Steuerzeichen

Ziffer Numerische Zeichen

Grafik Grafische Zeichen

Ideogramm ideographische Zeichen

Kleinbuchstaben Kleinbuchstaben

Phonogramm Phonographische Zeichen

druckbare Zeichen drucken

Satzzeichen Interpunktionszeichen

Rune Gültige Zeichen

Leerzeichen Leerzeichen

Sonderzeichen

Großbuchstaben in Großbuchstaben

xdigit Hexadezimalzeichen

Um Ihnen eine Vorstellung davon zu vermitteln, wie diese speziellen Zeichenklassen in der Praxis aussehen, versuchen wir ein Beispiel. Sie können den Inhalt von myfile.txt mithilfe von Zeichenklassen wie folgt von Kleinbuchstaben in Großbuchstaben übersetzen:

$$$ tr "[: lower:]" "[: upper:]" <meineDatei.txt

Schritt 5: Einige Zeichen aus der Eingabe löschen

Sie können die Option –d verwenden, um unerwünschte Zeichen aus Ihrer Eingabe zu löschen. Geben Sie einfach eine Zeichenfolge an, die Sie löschen möchten. Sie können beispielsweise den Buchstaben w aus der Eingabedatei myfile.txt mit dem folgenden Befehl löschen:

$$$ tr –d „w“ <meineDatei.txt

Bereit für ein nützliches, wenn auch etwas schwierigeres Beispiel? Angenommen, Sie möchten eine hässliche MS-DOS-Textdatei aufräumen, die alle mit verstreuten "^ M" -Zeichen am Ende der Zeilen versehen ist. Sie können sie ganz bequem mit der Option –d entfernen:

$$$ tr –d 015 <DOSfile.txt> UNIXfile.txt

Das nicht-UNIX-spezifische „ 015“, das in dem Befehl verwendet wird, bezieht sich auf die Wagenrücklaufzeichen in DOSfile.txt, die in UNIXfile.txt nicht mehr als Senseore gelten.

Schritt 6: Alles löschen, ABER einige von Ihnen angegebene Zeichen

Sie können auch alles löschen, ABER eine von Ihnen angegebene Zeichenfolge. Dies wird als "Ergänzung" für diejenigen von Ihnen bezeichnet, die mathematische Nerds kennen, die mit der Mengenlehre vertraut sind. Daher ist die Option "–c".

Stellen Sie sich zum Beispiel vor, dass Ihre Eingabezeichenfolge etwa lautet: "Meine Kontonummer ist 123456". Wenn Sie nur an der Kontonummer interessiert sind, können Sie alles in die Eingabezeichenfolge mit Ausnahme der Ziffern mit der folgenden Befehlszeile vertiefen:

$ echo "Meine Kontonummer ist 123456" | tr -cd [: Ziffer:]
123456

Schritt 7: Komprimieren Ihrer Eingabe

Sie können den Befehl tr mit der Option –s verwenden, um Ihre Eingabe zu komprimieren oder zu komprimieren. Das bedeutet, dass Sie mehrere Instanzen eines Zeichens oder einer Zeichenfolge durch nur eine ersetzen können. Wenn Sie beispielsweise mehrere Zeilen mit neuen Zeilen in einem Dokument entfernen möchten, können Sie den Befehl wie folgt ausführen:

$$$ tr -s " n"

Dieser Befehl sucht nach einer Reihe von Zeilen mit neuen Zeilen, n, und ersetzt sie durch ein einziges Zeichen. Ziemlich schick, richtig?

Schritt 8: Optionen

Hier ist eine Liste der Optionen, die Sie mit tr verwenden können:

-c Ergänzt die Operation, was bedeutet, dass sie für alles gilt, ABER das, was in der Zeichenfolge angegeben ist.

-d Löscht die Zeichen in String1 aus der Ausgabe.

-s Setzt mehrere Vorkommen eines Zeichens zu einer einzelnen Instanz des Zeichens zusammen.Dieser Vorgang findet nur statt, nachdem alle Löschvorgänge (-d) und Übersetzungsvorgänge abgeschlossen sind. Ideal für die Vorverarbeitung vor dem Einsatz des Schneidewerkzeugs.

-u Stellt sicher, dass die Ausgabe nicht gepuffert wird.