Linux / Befehl tr: Zeichen übersetzen und löschen

tr ersetzt oder löscht Zeichen aus der Standardeingabe und komprimiert wiederholte Zeichen. Denken Sie zunächst daran, dass es Dateinamen nicht direkt als Argumente annimmt.

tr ist ein Zeichenfilter auf Zeichenebene. Um Zeichenkettenmuster zu finden und kontextuell zu ersetzen, ist sed besser geeignet. Da die Interpretation von Zeichenbereichen durch die Gebietsschemaeinstellungen beeinflusst werden kann, prüfen Sie den Eingabezeichensatz in Skripten.

Grundlegende Syntax

tr [OPTION] SET1 [SET2] < INPUTFILE

Installierte Implementierungen und Optionen können je nach Distribution variieren. Verwenden Sie man tr, um die Beschreibung auf Ihrem aktuellen System zu prüfen.

Beispiele

Kleinbuchstaben zu Großbuchstaben

Leiten Sie die Eingabe über eine Pipeline und zeigen Sie die Ergebnisse auf dem Bildschirm an.

printf '%s\n' hello | tr '[:lower:]' '[:upper:]'

Bestimmte Zeichen löschen

-d entfernt Zeichen, die zur angegebenen Zeichengruppe gehören.

tr -d '\r' < windows-lines.txt

Leerzeichen-Komprimierung wiederholen

Reduziert aufeinanderfolgende Leerzeichen auf eines. Eine separate Ersetzung ist erforderlich, um Tabs und Leerzeichen in einen Typ zu vereinheitlichen.

tr -s ' ' < notes.txt

Ergebnis der Zeichenebenen-Konvertierung

tr ersetzt oder löscht Zeichen aus der Standardeingabe einzeln. Das folgende Beispiel zeigt, wie Großbuchstaben in englischer Sprache in Kleinbuchstaben umgewandelt werden.

printf 'HELLO 123\n' | tr '[:upper:]' '[:lower:]'

Beispielausgabe:

hello 123

Zahlen und Leerzeichen unterliegen keiner Konvertierung und bleiben daher unverändert. Da tr kein Dateipfadargument erhält, verwenden Sie beim Verarbeiten von Dateien eine Umleitung wie tr... < original > result. Für komplexe Ersetzungen von Mehrbytezeichen oder Wort-/Regex-Ersetzungen sind sed oder andere Textverarbeitungstools besser geeignet.

Hauptoptionen und Format

Optionen/Format Beschreibung
-d Löscht Zeichen, die set1 entsprechen.
-s Komprimiert wiederholt vorkommende Zeichen auf eines.
-c Wählt Zeichen aus, die nicht in set1 enthalten sind.
[:lower:] / [:upper:] Stellt Groß- und Kleinbuchstabenmengen mit einer Zeichenklasse dar.

Vorsichtsmaßnahmen bei der Verwendung

Verändert die Eingabedatei nicht. tr ... < file > file kann dazu führen, dass die Shell die Datei zuerst leert, daher verwenden Sie eine separate Ausgabedatei. Die Sets in tr sind keine vollständigen regulären Ausdrücke, und überprüfen Sie die Implementierung sowie die Ländereinstellungen auf Beschränkungen bei der UTF-8-Mehrbyte-Verarbeitung.

Häufig gestellte Fragen

Können Sie einen Dateinamen wie tr file.txt angeben?

Nein. Der Inhalt der Datei muss wie tr... < file.txt über die Standardeingabe bereitgestellt werden.

Offizielle Dokumentation

Das genaue Verhalten der Optionen und Implementierungsunterschiede finden Sie in der offiziellen tr-Dokumentation.