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.




