Einführung
In diesem Lab erkunden wir den tr-Befehl unter Linux, ein vielseitiges Werkzeug zur Transformation von Text auf Zeichenebene. Der Befehl tr (kurz für "translate", also übersetzen) wird häufig für Aufgaben wie die Konvertierung von Groß- und Kleinschreibung, das Entfernen spezifischer Zeichen und die grundlegende Datenbereinigung verwendet. Am Ende dieses Labs werden Sie sicher im Umgang mit tr für verschiedene Szenarien der Textmanipulation sein. Dieses Lab richtet sich an Anfänger – machen Sie sich also keine Sorgen, wenn Sie noch nicht vertraut mit Linux-Befehlen sind; wir führen Sie Schritt für Schritt durch jede Aufgabe.
Die Grundlagen von tr verstehen
Beginnen wir mit der grundlegenden Syntax des tr-Befehls:
tr [OPTION]... SET1 [SET2]
Der tr-Befehl liest Text von der Standardeingabe (stdin), transformiert ihn gemäß den angegebenen Optionen und Zeichensätzen und schreibt das Ergebnis in die Standardausgabe (stdout).
Fangen wir mit einem einfachen Beispiel an. Wir erstellen eine Datei namens greeting.txt mit einer einfachen Begrüßung und verwenden dann tr, um alle Kleinbuchstaben in Großbuchstaben umzuwandeln.
Erstellen Sie zunächst die Datei:
echo "hello, world" > ~/project/greeting.txt
Tipps: Sie können die Befehle zur Dateierstellung kopieren und in das Terminal einfügen, um die Dateien korrekt zu erstellen.
Dieser Befehl erstellt eine neue Datei namens greeting.txt in Ihrem Projektverzeichnis (~/project/) mit dem Inhalt "hello, world".
Lassen Sie uns nun tr verwenden, um alle Kleinbuchstaben in Großbuchstaben umzuwandeln:
cat ~/project/greeting.txt | tr 'a-z' 'A-Z'
Sie sollten die folgende Ausgabe sehen:
HELLO, WORLD
Hier ist die Aufschlüsselung dieses Befehls:
cat ~/project/greeting.txt: Dies liest den Inhalt der Datei.|: Dies ist ein Pipe-Symbol. Es nimmt die Ausgabe des Befehls auf der linken Seite und leitet sie als Eingabe an den Befehl auf der rechten Seite weiter.tr 'a-z' 'A-Z': Dies ist unsertr-Befehl. Er übersetzt jedes Zeichen im ersten Satz ('a-z', was alle Kleinbuchstaben repräsentiert) in das entsprechende Zeichen im zweiten Satz ('A-Z', was alle Großbuchstaben repräsentiert).
Beachten Sie, dass dieser Befehl die Originaldatei nicht verändert. Wenn Sie den transformierten Text speichern möchten, müssten Sie die Ausgabe in eine neue Datei umleiten.
Zeichen mit tr löschen
Der tr-Befehl kann auch spezifische Zeichen aus der Eingabe löschen. Dies ist besonders nützlich, wenn Sie Text bereinigen müssen, indem Sie unerwünschte Zeichen entfernen. Erstellen wir eine Datei mit etwas Interpunktion und entfernen diese anschließend.
Erstellen Sie zunächst eine Datei mit Interpunktion:
echo "Hello, World! How are you?" > ~/project/punctuated.txt
Tipps: Sie können die Befehle zur Dateierstellung kopieren und in das Terminal einfügen, um die Dateien korrekt zu erstellen.
Lassen Sie uns nun tr verwenden, um die gesamte Interpunktion zu entfernen:
cat ~/project/punctuated.txt | tr -d '[:punct:]'
Sie sollten Folgendes sehen:
Hello World How are you
Hier ist die Aufschlüsselung dieses Befehls:
cat ~/project/punctuated.txt: Dies liest den Inhalt der Datei.|: Dies leitet die Ausgabe an dentr-Befehl weiter.tr -d '[:punct:]':- Die Option
-dweisttran, die angegebenen Zeichen zu löschen. [:punct:]ist eine Zeichenklasse, die alle Interpunktionszeichen repräsentiert. Zeichenklassen sind vordefinierte Mengen von Zeichen, die es erleichtern, Gruppen von Zeichen anzugeben.
- Die Option
Dieser Befehl entfernt alle Interpunktionszeichen aus dem Text und lässt nur Buchstaben, Zahlen und Leerzeichen übrig.
Mehrere Zeichen übersetzen
Lassen Sie uns nun eine komplexere Übersetzung erkunden. Wir erstellen eine Datei mit verschlüsseltem Text und verwenden tr, um ihn zu entschlüsseln. Dieses Beispiel zeigt, wie tr für einfache Verschlüsselung und Entschlüsselung verwendet werden kann.
Erstellen Sie zunächst eine Datei mit verschlüsseltem Text:
echo "Uijt jt b tfdsfu nfttbhf." > ~/project/encoded.txt
Tipps: Sie können die Befehle zur Dateierstellung kopieren und in das Terminal einfügen, um die Dateien korrekt zu erstellen.
Lassen Sie uns den Text nun entschlüsseln:
cat ~/project/encoded.txt | tr 'b-zaB-ZA' 'a-zA-Z'
Sie sollten Folgendes sehen:
This is a secret message.
Hier ist die Aufschlüsselung dieses Befehls:
cat ~/project/encoded.txt: Dies liest den Inhalt der verschlüsselten Datei.|: Dies leitet die Ausgabe an dentr-Befehl weiter.tr 'b-zaB-ZA' 'a-zA-Z':- Der erste Satz
b-zaB-ZAkombiniert zwei verschobene Alphabete:b-za: Kleinbuchstaben b bis z, gefolgt von aB-ZA: Großbuchstaben B bis Z, gefolgt von A
- Zusammen decken sie jeden Buchstaben ab, der um eine Position zurückgeschoben werden soll.
- Der zweite Satz
a-zA-Zist: Kleinbuchstaben a bis z, gefolgt von Großbuchstaben A bis Z. - Dies erzeugt eine Zuordnung, bei der jedes Zeichen im ersten Satz durch das entsprechende Zeichen im zweiten Satz ersetzt wird:
- b (1. im ersten Satz) → a (1. im zweiten Satz)
- c (2. im ersten Satz) → b (2. im zweiten Satz)
- ...
- a (26. im ersten Satz) → z (26. im zweiten Satz)
- B (27. im ersten Satz) → A (27. im zweiten Satz)
- ...
- A (52. im ersten Satz) → Z (52. im zweiten Satz)
- Dies verschiebt effektiv jeden Buchstaben in der Eingabe um eine Position im Alphabet zurück, sowohl für Klein- als auch für Großbuchstaben, wodurch die Nachricht korrekt entschlüsselt wird.
- Der erste Satz
Diese Art der Substitution ist eine sehr einfache Form der Verschlüsselung, die als Caesar-Verschlüsselung bekannt ist. Obwohl sie für den realen Einsatz nicht sicher ist, ist sie ein hervorragendes Beispiel dafür, wie tr für zeichenweise Substitution verwendet werden kann.
Verwendung von Zeichenklassen mit tr
Der tr-Befehl unterstützt verschiedene Zeichenklassen, bei denen es sich um vordefinierte Zeichensätze handelt. Diese können für komplexere Texttransformationen sehr nützlich sein. Lassen Sie uns einige davon in einem praktischen Szenario anwenden.
Erstellen Sie zunächst eine Datei mit gemischtem Inhalt:
echo "User123 logged in at 09:45 AM on 2023-08-15" > ~/project/log_entry.txt
Tipps: Sie können die Befehle zur Dateierstellung kopieren und in das Terminal einfügen, um die Dateien korrekt zu erstellen.
Lassen Sie uns nun nur die Ziffern aus diesem Log-Eintrag extrahieren:
cat ~/project/log_entry.txt | tr -cd '[:digit:]'
Sie sollten Folgendes sehen:
12309452023815
Hier ist die Aufschlüsselung dieses Befehls:
cat ~/project/log_entry.txt: Dies liest den Inhalt der Log-Datei.|: Dies leitet die Ausgabe an dentr-Befehl weiter.tr -cd '[:digit:]':- Die Option
-cbildet das Komplement des Satzes (bedeutet "nicht in diesem Satz"). - Die Option
-dlöscht die angegebenen Zeichen. [:digit:]ist eine Zeichenklasse, die alle Ziffern (0-9) repräsentiert.- Zusammen bedeutet
-cd '[:digit:]'also "lösche alle Zeichen, die keine Ziffern sind".
- Die Option
Dieser Befehl ist nützlich, um numerische Daten aus gemischtem Text zu extrahieren, was bei der Log-Analyse oder bei Datenbereinigungsaufgaben hilfreich sein kann.
Wiederholungen mit tr zusammenfassen
Der tr-Befehl kann auch wiederholte Zeichen zu einem einzigen Vorkommen "zusammenfassen" (squeeze). Dies ist nützlich, um Daten von unnötigen Wiederholungen zu bereinigen. Erstellen wir eine Datei mit einigen wiederholten Zeichen und bereinigen diese.
Erstellen Sie zunächst eine Datei mit wiederholten Leerzeichen:
echo "This is a test with extra spaces." > ~/project/spaced.txt
Tipps: Sie können die Befehle zur Dateierstellung kopieren und in das Terminal einfügen, um die Dateien korrekt zu erstellen.
Lassen Sie uns nun tr verwenden, um die wiederholten Leerzeichen zusammenzufassen:
cat ~/project/spaced.txt | tr -s ' '
Sie sollten Folgendes sehen:
This is a test with extra spaces.
Hier ist die Aufschlüsselung dieses Befehls:
cat ~/project/spaced.txt: Dies liest den Inhalt der Datei mit den zusätzlichen Leerzeichen.|: Dies leitet die Ausgabe an dentr-Befehl weiter.tr -s ' ':- Die Option
-sfasst Wiederholungen des angegebenen Zeichens zu einem einzigen Vorkommen zusammen. ' 'gibt an, dass wir Leerzeichen zusammenfassen möchten.
- Die Option
Dieser Befehl ist besonders nützlich, wenn Sie mit schlecht formatierten Daten arbeiten oder wenn Sie Leerzeichen in einer Textdatei normalisieren müssen.
Zusammenfassung
In diesem Lab haben wir den vielseitigen tr-Befehl unter Linux erkundet. Wir haben gelernt, wie man:
- Die Groß-/Kleinschreibung von Text konvertiert
- Spezifische Zeichen löscht
- Mehrere Zeichen übersetzt
- Zeichenklassen verwendet
- Wiederholte Zeichen zusammenfasst
Der tr-Befehl ist ein mächtiges Werkzeug für die Textmanipulation. Hier sind einige zusätzliche Optionen, die wir nicht im Detail behandelt haben:
-c: Komplementiert den Zeichensatz in string1, d. h. operiert auf allen Zeichen, die nicht in string1 enthalten sind-t: Kürzt string1 auf die Länge von string2
Für fortgeschrittenere Aufgaben der Textverarbeitung könnten Sie in zukünftigen Labs Befehle wie sed und awk erkunden.



