Dies ist der Befehl trposix, der im kostenlosen OnWorks-Hosting-Provider mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator ausgeführt werden kann
PROGRAMM:
NAME/FUNKTION
tr — Zeichen übersetzen
ZUSAMMENFASSUNG
tr [−c|−C] [−s] string1 string2
tr −s [−c|−C] string1
tr-d [−c|−C] string1
tr-ds [−c|−C] string1 string2
BESCHREIBUNG
Die tr Dienstprogramm kopiert die Standardeingabe in die Standardausgabe mit Ersetzung oder
Löschen ausgewählter Zeichen. Die angegebenen Optionen und die string1 und string2
Operanden sollen Übersetzungen steuern, die beim Kopieren von Zeichen und einzelnen
Elemente zum Sortieren von Zeichen.
OPTIONAL
Die tr Dienstprogramm muss dem Band der Basisdefinitionen von POSIX.1‐2008 entsprechen, Abschnitt 12.2,
Dienstprogramm Syntax Richtlinien.
Folgende Optionen sollen unterstützt werden:
-c Vervollständigen Sie die durch angegebene Menge von Werten string1. Siehe die ERWEITERTE BESCHREIBUNG
.
-C Ergänze den durch . angegebenen Zeichensatz string1. Siehe die ERWEITERTE
Abschnitt BESCHREIBUNG.
-d Löschen Sie alle Vorkommen von Eingabezeichen, die durch . angegeben sind string1.
−s Ersetzen Sie Instanzen wiederholter Zeichen durch ein einzelnes Zeichen, wie beschrieben
im Abschnitt ERWEITERTE BESCHREIBUNG.
OPERANDEN
Folgende Operanden sollen unterstützt werden:
string1, string2
Steuerzeichenfolgen für die Übersetzung. Jede Zeichenfolge soll einen Satz von Zeichen darstellen, um
in ein Zeichenarray umgewandelt werden, das für die Übersetzung verwendet wird. Für ein
detaillierte Beschreibung, wie die Strings interpretiert werden, siehe EXTENDED
Abschnitt BESCHREIBUNG.
STDIN
Die Standardeingabe kann ein beliebiger Dateityp sein.
SPEISUNG DATEIEN
Keiner.
VARIABLEN
Die folgenden Umgebungsvariablen sollen die Ausführung von tr:
SPRACHE Geben Sie einen Standardwert für die Internationalisierungsvariablen an, die nicht festgelegt sind oder
Null. (Siehe den Band Basisdefinitionen von POSIX.1‐2008, Abschnitt 8.2,
Internationalisierung Variablen für den Vorrang der Internationalisierung
Variablen, die verwendet werden, um die Werte von Gebietsschemakategorien zu bestimmen.)
LC_ALL Wenn auf einen nicht leeren Zeichenfolgenwert gesetzt, überschreiben Sie die Werte aller anderen
Internationalisierungsvariablen.
LC_COLLATE
Bestimmen Sie das Gebietsschema für das Verhalten von Bereichsausdrücken und Äquivalenz
Klassen.
LC_CTYPE Bestimmen Sie das Gebietsschema für die Interpretation von Sequenzen von Bytes von Textdaten
als Zeichen (z. B. Einzelbyte- im Gegensatz zu Mehrbyte-Zeichen in
Argumente) und das Verhalten von Zeichenklassen.
LC_MESSAGES
Bestimmen Sie das Gebietsschema, das verwendet werden soll, um das Format und den Inhalt von . zu beeinflussen
Diagnosemeldungen in Standardfehler geschrieben.
NLSPATH Bestimmen Sie den Speicherort von Nachrichtenkatalogen für die Verarbeitung von LC_MESSAGES.
ASYNCHRON EVENTS
Standard.
STDOUT
Die tr der Ausgang muss mit dem Eingang identisch sein, mit Ausnahme der spezifizierten
Transformationen.
STDERR
Der Standardfehler darf nur für Diagnosemeldungen verwendet werden.
AUSGABE DATEIEN
Keiner.
VERLÄNGERT BESCHREIBUNG
Die Operanden string1 und string2 (falls angegeben) Definieren Sie zwei Zeichenarrays. Die
Konstrukte in der folgenden Liste können verwendet werden, um Zeichen oder einzelne Zeichen anzugeben
kollationierende Elemente. Wenn eines der Konstrukte zu Sortierelementen aus mehreren Zeichen führt,
tr schließt ohne Diagnose diese mehrstelligen Elemente aus der resultierenden
Array.
Charakter Jedes Zeichen, das nicht durch eine der folgenden Konventionen beschrieben wird, steht für
sich.
oktal Oktale Sequenzen können verwendet werden, um Zeichen mit bestimmten codierten Werten darzustellen.
Eine Oktalfolge besteht aus a gefolgt vom längsten
Folge von ein-, zwei- oder dreistelligen Zeichen (01234567). Der Ablauf
bewirkt, dass der Wert, dessen Codierung durch eins, zwei oder drei dargestellt wird,
Ziffer oktale Ganzzahl, die in das Array eingefügt werden soll. Multi-Byte-Zeichen erfordern
mehrere, verkettete Escape-Sequenzen dieses Typs, einschließlich der führenden
für jedes Byte.
Charakter
Die -Escape-Sequenzen im Band Base Definitions von POSIX.1‐2008,
Tisch 5 1 , Flucht Sequenzen und Damit verbundenen Aktionen ('\\', '\ein', '\B', '\F',
'\n', '\R', '\t', '\v') unterstützt werden. Die Ergebnisse der Verwendung anderer
Zeichen, außer einer Oktalziffer, nach dem sind nicht angegeben.
Auch wenn kein Zeichen nach dem , die Ergebnisse sind
nicht spezifiziert.
c-c Im POSIX-Gebietsschema soll dieses Konstrukt den Sortierbereich darstellen
Elemente zwischen den Bereichsendpunkten (solange keiner der Endpunkte oktal ist
Reihenfolge des Formulars oktal), einschließlich, wie durch die Kollatierungssequenz definiert.
Die Zeichen oder Sortierelemente im Bereich werden in das Array eingefügt
in aufsteigender Sortierreihenfolge. Wenn der zweite Endpunkt vor dem Startpunkt liegt
Endpunkt in der Kollatierungssequenz ist nicht angegeben, ob der Bereich von
collating elements ist leer, oder dieses Konstrukt wird als ungültig behandelt. In Gebietsschemas
Anders als das POSIX-Gebietsschema weist dieses Konstrukt ein nicht spezifiziertes Verhalten auf.
Wenn einer oder beide Bereichsendpunkte Oktalfolgen der Form sind oktal,
dies soll den Bereich der spezifischen codierten Werte zwischen den beiden Bereichen darstellen
Endpunkte, inkl.
[:Klasse:] Stellt alle Zeichen dar, die zur definierten Zeichenklasse gehören, wie definiert
durch die aktuelle Einstellung des LC_CTYPE Gebietsschema-Kategorie. Das folgende Zeichen
Klassennamen werden akzeptiert, wenn sie in angegeben sind string1:
alnum leer Ziffer senken Punkt obere
Alpha Strg Graph drucken Raum xStelle
Außerdem können Zeichenklassenausdrücke der Form [:Name:] muss
an den Orten anerkannt, an denen die Name Stichwort wurde gegeben a Zeichenklasse
Definition in der LC_CTYPE Apps.
Wenn beide -d und −s Optionen angegeben sind, jeder der Zeichenklassennamen
wird akzeptiert in string2. Ansonsten nur Charakterklassennamen senken or
obere sind gültig in string2 und dann nur, wenn die entsprechende Zeichenklasse
(obere und senken) wird in der gleichen relativen Position in . angegeben
string1. Eine solche Spezifikation ist als Antrag auf Fall auszulegen
Wandlung. Wann [:senken:] erscheint in string1 und [:obere:] erscheint in string2,
die Arrays sollen die Zeichen aus dem TOUPPER Kartierung in der LC_CTYPE
Kategorie des aktuellen Gebietsschemas. Wann [:obere:] erscheint in string1 und [:senken:]
erscheint in string2, die Arrays enthalten die Zeichen aus dem tolower
Kartierung in der LC_CTYPE Kategorie des aktuellen Gebietsschemas. Der erste Charakter aus
jedes Mapping-Paar soll im Array für . sein string1 und das zweite Zeichen
von jedem Mapping-Paar soll im Array für . sein string2 im gleichen Verwandten
Position.
Mit Ausnahme der Groß-/Kleinschreibung sind die von einer Zeichenklasse angegebenen Zeichen
Ausdruck soll in einer nicht spezifizierten Reihenfolge im Array platziert werden.
Wenn der für . angegebene Name Klasse definiert keine gültige Zeichenklasse im
aktuellen Gebietsschema ist das Verhalten undefiniert.
[=Äquivalent=] Stellt alle Zeichen oder Sortierelemente dar, die zum selben gehören
Äquivalenzklasse als Äquivalent, wie durch die aktuelle Einstellung des LC_COLLATE
Gebietsschema-Kategorie. Ein Äquivalenzklassenausdruck ist nur zulässig in
string1, Oder in string2 wenn es von der kombinierten verwendet wird -d und −s Optionen.
Die zur Äquivalenzklasse gehörenden Zeichen werden in das Array eingefügt
in unbestimmter Reihenfolge.
[x*n] Repräsentiert n wiederholtes Auftreten des Zeichens x. Denn dieser Ausdruck
wird verwendet, um mehrere Zeichen einem zuzuordnen, es ist nur gültig, wenn es in auftritt
string2. Wenn n weggelassen wird oder null ist, ist es so zu interpretieren, dass es groß genug ist, um
Erweitere string2-basierte Sequenz auf die Länge der string1-basierte Reihenfolge.
If n eine führende Null hat, ist sie als oktaler Wert zu interpretieren. Andernfalls,
er ist als Dezimalwert zu interpretieren.
Wenn das -d Option ist nicht angegeben:
* Ob string2 vorhanden ist, wird jedes Eingabezeichen in dem durch . angegebenen Array gefunden string1
soll durch das Zeichen an derselben relativen Position im Array ersetzt werden
spezifiziert durch string2. Wenn das durch . angegebene Array string2 ist kürzer als der
spezifiziert durch string1, oder wenn ein Zeichen mehr als einmal in . vorkommt string1, die Ergebnisse
sind nicht angegeben.
* Wenn die -C Option angegeben ist, die Komplemente der durch . angegebenen Zeichen string1
(der Satz aller Zeichen im aktuellen Zeichensatz, wie durch den aktuellen
Einstellung von LC_CTYPE, mit Ausnahme derjenigen, die tatsächlich in den string1 Operand) soll
in aufsteigender Sortierreihenfolge im Array platziert werden, wie durch den aktuellen . definiert
Einstellung von LC_COLLATE.
* Wenn die -c Option angegeben ist, das Komplement der durch . angegebenen Werte string1 wird
in aufsteigender Reihenfolge nach Binärwert im Array platziert werden.
* Weil die Reihenfolge, in der Zeichen durch Zeichenklassenausdrücke oder
Äquivalenzklassenausdrücke nicht definiert sind, sollten solche Ausdrücke nur verwendet werden, wenn
die Absicht besteht darin, mehrere Zeichen zu einem abzubilden. Eine Ausnahme ist die Groß-/Kleinschreibung, da
vorher beschrieben.
Wenn das -d Option ist angegeben:
* Eingabezeichen, die in dem durch . angegebenen Array gefunden wurden string1 werden gelöscht.
* Wenn der -C Option ist angegeben mit -d, alle Zeichen außer den durch angegebenen
string1 werden gelöscht. Die Inhalte von string2 werden ignoriert, es sei denn, die −s Option ist
auch angegeben.
* Wenn der -c Option ist angegeben mit -d, alle Werte außer den durch angegebenen string1
werden gelöscht. Die Inhalte von string2 werden ignoriert, es sei denn, die −s Option ist
auch angegeben.
* Dieselbe Zeichenfolge kann nicht für beide verwendet werden -d und der −s Möglichkeit; wenn beide möglichkeiten
angegeben sind, beide string1 (zum Löschen verwendet) und string2 (zum Quetschen verwendet) soll
erforderlich sein.
Wenn das −s Option angegeben wird, nachdem Löschungen oder Übersetzungen stattgefunden haben,
wiederholte Folgen desselben Zeichens werden durch ein Vorkommen desselben ersetzt
Zeichen, wenn das Zeichen in dem durch den letzten Operanden angegebenen Array gefunden wird. Wenn die
letzter Operand enthält eine Zeichenklasse, wie im folgenden Beispiel:
tr −s '[:Platz:]'
das Array des letzten Operanden soll alle Zeichen dieser Zeichenklasse enthalten.
Bei einer Fallkonvertierung jedoch, wie zuvor beschrieben, wie:
tr −s '[:Oberer, höher:]' '[:untere:]'
das Array des letzten Operanden darf nur die Zeichen enthalten, die als zweiter definiert sind
Zeichen in jedem der TOUPPER or tolower Zeichenpaare, ggf.
Eine leere Zeichenfolge für string1 or string2 führt zu undefinierten Ergebnissen.
EXIT STATUS
Die folgenden Exit-Werte sollen zurückgegeben werden:
0 Alle Eingaben wurden erfolgreich verarbeitet.
>0 Es ist ein Fehler aufgetreten.
FOLGEN OF FEHLER
Standard.
Die Folgende Abschnitte sind informativ.
Anmeldeformular ANWENDUNG
Falls erforderlich, string1 und string2 kann in Anführungszeichen gesetzt werden, um einen Mustervergleich durch die Shell zu vermeiden.
Wenn eine gewöhnliche Ziffer (die sich selbst repräsentiert) einer Oktalfolge folgen soll, wird das Oktal
Sequenz muss die vollen drei Ziffern verwenden, um Mehrdeutigkeiten zu vermeiden.
Wann string2 ist kürzer als string1, ergibt sich ein Unterschied zwischen dem historischen System V und
BSD-Systeme. Ein BSD-System-Pads string2 mit dem letzten gefundenen Zeichen in string2. Also es
ist folgendes möglich:
tr 0123456789 d
was alle Ziffern in den Buchstaben übersetzen würde 'D'. Da dieser Bereich speziell ist
in diesem Band von POSIX.1‐2008 nicht spezifiziert, sind sowohl das BSD- als auch das System V-Verhalten
erlaubt, aber eine konforme Anwendung kann sich nicht auf das BSD-Verhalten verlassen. Es müsste
kodieren Sie das Beispiel wie folgt:
tr 0123456789 '[D*]'
Es sollte beachtet werden, dass trotz der Ähnlichkeiten im Aussehen die von verwendeten String-Operanden
tr sind keine regulären Ausdrücke.
Im Gegensatz zu einigen historischen Implementierungen ist diese Definition der tr Dienstprogramm richtig
verarbeitet NUL-Zeichen in seinem Eingabestrom. NUL-Zeichen können entfernt werden mit:
tr -d '\000'
Beispiele:
1. Das folgende Beispiel erstellt eine Liste aller Wörter in file1 einer pro Zeile in file2,
wobei ein Wort als maximale Buchstabenfolge angesehen wird.
tr -cs "[:Alpha:]" "[\n*]" <Datei1 >Datei2
2. Das nächste Beispiel übersetzt alle Kleinbuchstaben in file1 in Großbuchstaben und schreibt
die Ergebnisse in die Standardausgabe.
tr "[:untere:]" "[:Oberer, höher:]" <Datei1
3. Dieses Beispiel verwendet eine Äquivalenzklasse, um akzentuierte Varianten der Basis zu identifizieren
Charakter 'e' in file1, die von diakritischen Zeichen befreit und angeschrieben werden file2.
tr "[=e=]" "[e*]" <Datei1 >Datei2
RATIONALE
In einigen frühen Vorschlägen ist eine explizite Option -n wurde hinzugefügt, um das historische zu deaktivieren
Verhalten beim Entfernen von NUL-Zeichen aus der Eingabe. Es wurde davon ausgegangen, dass automatisch
Das Entfernen von NUL-Zeichen aus der Eingabe war keine korrekte Funktionalität. Allerdings ist die
Entfernung von -n in einem späteren Vorschlag hebt nicht die Anforderung auf, dass tr korrekt
verarbeitet NUL-Zeichen in seinem Eingabestrom. NUL-Zeichen können entfernt werden mit tr -d
'\000'.
Historische Implementierungen von tr unterscheiden sich stark in Syntax und Verhalten. Zum Beispiel die
Die BSD-Version hat die Klammerzeichen für die Wiederholungssequenz nicht benötigt. Die tr
Die Utility-Syntax basiert stärker auf dem System V- und XPG3-Modell, während versucht wird,
historische BSD-Implementierungen aufnehmen. Bei der kurzen string2 Polsterung, die
Die Entscheidung bestand darin, das Verhalten nicht zu spezifizieren und System V- und XPG3-Skripte beizubehalten, was möglicherweise
Schwierigkeiten mit der BSD-Methode finden. Es wurde davon ausgegangen, dass BSD-Benutzer von tr müssen
Anpassungen vornehmen, um die hier definierte Syntax zu erfüllen. Da es möglich ist, die
Wiederholungssequenz, um das gewünschte Verhalten zu duplizieren, während es keinen einfachen Weg gibt, um
die System-V-Methode zu erreichen, war dies der richtige, wenn auch nicht wünschenswerte Ansatz.
Die Verwendung von Oktalwerten zur Angabe von Steuerzeichen, während historische Präzedenzfälle vorhanden sind,
ist nicht tragbar. Die Einführung von Escape-Sequenzen für Steuerzeichen sollte
sorgen für die nötige Portabilität. Es wird anerkannt, dass dies einige historische
Skripte zu brechen.
Ein früher Vorschlag umfasste die Unterstützung von Sortierelementen mit mehreren Zeichen. Es war spitz
das aus, während tr verwendet einige syntaktische Elemente aus REs, das Ziel von tr ist ziemlich
unterschiedlich; Bereiche haben beispielsweise keine ähnliche Bedeutung (``eines der Zeichen in der
Range-Matches'', gegen ``übersetze jedes Zeichen im Bereich in die Ausgabe
Gegenstück''). Dadurch wird die zuvor enthaltene Unterstützung für das Sortieren von mehreren Zeichen
Elemente wurden entfernt. Was bleibt, sind Bereiche in der aktuellen Sortierreihenfolge (zur Unterstützung,
B. Zeichen mit Akzent), Zeichenklassen und Äquivalenzklassen.
In XPG3 die [:Klasse:] und [=Äquivalent=] Konventionen werden mit doppelten Klammern dargestellt, wie in RE
Syntax. Jedoch, tr setzt keine RE-Prinzipien um; es entlehnt nur einen Teil der Syntax.
Folglich, [:Klasse:] und [=Äquivalent=] sollten als syntaktische Elemente auf Augenhöhe betrachtet werden
mit [x*n], der kein RE-Klammerausdruck ist.
Die Standardentwickler werden Änderungen an tr die es ermöglichen, Zeichen zu übersetzen
zwischen verschiedenen Zeichenkodierungen, oder sie werden erwägen, ein neues Dienstprogramm bereitzustellen, um
dies bewerkstelligen.
Auf historischen System V-Systemen erfordert ein Bereichsausdruck eingeschlossene eckige Klammern,
Felsen der Yoga-Therapie:
tr '[az]' '[AZ]'
BSD-basierte Systeme benötigten die Klammern jedoch nicht, und diese Konvention wird hier verwendet
um zu vermeiden, dass eine große Anzahl von BSD-Skripten beschädigt wird:
tr AZ A-Z
Das obige System V-Skript funktioniert weiterhin, da die Klammern wie folgt behandelt werden:
reguläre Zeichen, werden in sich selbst übersetzt. Jedes System V-Skript, das
verließ sich auf "a-z" die drei Charaktere darstellen 'A', '-' und 'z' muss umgeschrieben werden
as "az-".
Der ISO POSIX-2:1993 Standard hatte eine -c Option, die sich ähnlich wie die -C Option, aber
lieferte keine Funktionalität, die der -c in POSIX.1‐2008 angegebene Option. Dies
bedeutete, dass die historische Praxis, spezifizieren zu können tr −cd\000−\177 (was
alle Bytes mit gesetztem obersten Bit löschen) hätte keine Auswirkung, da im C-Gebietsschema
Bytes mit den Werten oktal 200 bis oktal 377 sind keine Zeichen.
Die frühere Version sagte auch, dass sich Oktalsequenzen auf kollationierende Elemente beziehen und
könnten nebeneinander platziert werden, um Multi-Byte-Zeichen anzugeben. Es war jedoch
bemerkte, dass dies zu Mehrdeutigkeiten führte, weil tr wäre nicht in der Lage zu sagen, ob benachbart
Oktalsequenzen wollten Multibyte-Zeichen oder mehrere Einzelbytes angeben
Zeichen. POSIX.1‐2008 legt fest, dass sich Oktalsequenzen immer auf Einzelbyte-Binärdateien beziehen
Werte, wenn sie verwendet werden, um einen Endpunkt eines Bereichs von Sortierelementen anzugeben.
Frühere Versionen dieses Standards erlaubten Implementierungen mit anderen Bytes als acht
Bits, aber dies wurde in dieser Version geändert.
ZUKUNFT ANLEITUNG
Keiner.
Verwenden Sie trposix online mit den onworks.net-Diensten