Tauschgeschäfte

tr, dos2unix

01.02.2005
Das Programm "tr" ist ein wahrer Zauberkünstler: Mit diesem Befehl tauschen Sie Zeichenketten in Textdateien aus. Ob es um das Ersetzen einzelner Buchstaben und Ziffern geht oder um das Zusammenschrumpfen mehrerer Leerzeichen – "tr" gibt sich vielseitig.

Zu Befehl

Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder Gnome regeln lassen – wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, in denen es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.

Das Kommando tr dient dazu, in Texten einzelne Zeichen durch andere zu ersetzen. Das Kommando erhält seinen Input aus der Standardeingabe und schreibt das Ergebnis auf die Standardausgabe. Sie können aber beides mit den bekannten Operatoren auch umleiten. Gerade im Einsatz zusammen mit anderen Shell-Befehlen zeigt tr seine ganze Stärke und sorgt für zauberhafte Verwandlungen.

Einfach nur tauschen

Der Befehle tr nimmt zwei Zeichenketten als Argumente entgegen und ersetzt in Texten alle Zeichen des ersten Arguments durch das entsprechende Zeichen des zweiten. Was zunächst kompliziert klingt, kann man sich anhand eines einfachen Beispiels schnell vor Augen führen. Der folgende Aufruf ersetzt im Wort "Petronella" alle "e" durch "a":

$ echo Petronella | tr 'e' 'a'
Patronalla

Natürlich können Sie auch in einer Datei selbst bestimmte Zeichenketten austauschen. Das Kommando tr '1' '2' < test.txt ersetzt in der Datei test.txt alle Vorkommen von "1" durch eine "2" und leitet den Output an die Standardausgabe. Dabei sollten Sie beachten, dass in den Argumenten, die Sie übergeben, die Zeichen wie in Feldern angeordnet sind: Jedem Zeichen aus dem ersten Argument wird sein entsprechender Gegenpart aus dem zweiten Argument zugeordnet. So ersetzt tr 'abc' 'xyz' jeweils "a" durch "x", "b" durch "y" und "c" durch "z". Ist die zweite Zeichenkette kürzer als die erste, füllt tr die Lücke mit dem letzten Zeichen aus der zweiten Zeichenkette auf.

So stellt der Aufruf tr 'abc' 'z' < test.txt keinerlei Problem dar. Hier ersetzt tr alle Vorkommen von "a", "b" und "c" jeweils durch "z". Hingegen scheitert tr bei dem Versuch, "ä" durch "ae" zu ersetzen: Die Felder sind nicht gleichlang, und "ä" wird hier nur gegen "a" getauscht. Wer einen derartigen Tauschvorgang anstoßen möchte, nimmt besser das Programm sed [1] zu Hilfe.

Aus Groß mach Klein

Als besonders praktisch erweist sich der Einsatz von tr, wenn es darum geht, Groß- und Kleinbuchstaben miteinander zu vertauschen. Dabei können Sie natürlich die beiden Argumente gleich als ganze Listen von Feldern definieren, z. B.:

tr 'a-z' 'A-Z' < test.txt

Alternativ setzen Sie vordefinierte Zeichenklassen ein und schreiben:

tr [:lower:] [:upper:] < test.txt

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Im Anfang war der Prompt
    Mit der Shell geht vieles schneller: Das zeigen wir regelmäßig im Guru-Training. In dieser Ausgabe können Sie bei Null loslegen, wir erklären die Grundlagen der Shell-Benutzung und schaffen damit eine Grundlage für die übrigen Beiträge in dieser Rubrik.
  • Einführung in die Shell – Teil 3
    In den ersten zwei Teilen der Shell-Einführung [1,2] haben wir Sie mit den Grundlagen der Shell vertraut gemacht. Jetzt stellen wir einige Spezialtools vor, mit denen die Shell besonders leistungsfähig wird – darunter "xargs".
  • Verwandlung auf Befehl
    Unterschiedliche Zeilenenden oder Zeichenkodierungen machen Linuxern den Datenaustausch schwer. Ein paar Konvertierungstools auf der Shell helfen aus der Misere.
  • Dr. Linux
    Auch wenn oft schlicht von "einstampfen", "in die Tonne treten" oder "kopieren nach /dev/null" gesprochen wird, steckt hinter dem Löschen von Daten durchaus mehr als nur ein Mausklick.
  • The Answer Girl
    Solange man online ist, halten sich die Sprachprobleme in Grenzen: Web-Wörterbücher wie dict.leo.org helfen in meistens akzeptabler Geschwindigkeit über die Hürden des fehlenden (Englisch-) Wortschatzes hinweg. Doch wehe, man ist weder mit Standleitung noch Flatrate gesegnet: Schon ärgert man sich, das Regal mit den papiernen Wörterbüchern am anderen Ende des Raums aufgestellt zu haben.
Kommentare

Infos zur Publikation

LU 11/2014: VIDEOS BEARBEITEN

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

WLAN-Signalqualität vom Treiber abhängig
GoaSkin , 29.10.2014 14:16, 0 Antworten
Hallo, für einen WLAN-Stick mit Ralink 2870 Chipsatz gibt es einen Treiber von Ralink sowie (m...
Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 6 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...