Tauschgeschäfte
tr, dos2unix
Alles außer…
Der Befehl tr kennt einige Parameter, mit denen Sie noch gezielter tauschen können. Beispielsweise lässt sich durch Einsatz von -d gezielt etwas löschen:
tr -d '0-9' < test.txt
schickt beispielsweise alle Ziffern eines Textes ins Nirvana. Zusammen mit der Option -c können Sie Überflüssiges noch gezielter entfernen. Soll alles außer Leerzeichen, Groß- und Kleinbuchstaben verschwinden, sagen Sie tr über die Option -c, was nicht gelöscht werden soll:
tr -c -d 'A-Z a-z' < test.txt
Zusammen mit der Option -s lassen Sie Texte zusammenschrumpfen – praktisch, wenn eine Datei (z. B. ein Logfile) jede Menge Leerzeichen enthält. Der Parameter -s erwartet entweder ein oder zwei Argumente. So löscht das Kommando tr -s ' ' < test.txt alle Spaces aus einer Datei heraus. Wer hingegen einfach nur doppelte Leerzeichen oder Tabs entfernen und gegen einen einfachen Blank tauschen möchte, gibt tr und der Option -s einfach zwei Argumente mit auf den Weg:
tr -s [:blank:] ' ' < test.txt
Hier tauscht tr mehrere Leerzeichen oder Tabs hintereinander durch einfache Spaces aus.
Wanderer zwischen den Welten
Wer häufiger Textdateien zwischen Windows- und Linux-Systemen austauscht, stellt spätestens beim Benutzern eines Editors fest, dass seltsame Zeichen am Zeilenende auftauchen. Öffnen Sie etwa eine unter Windows erstellte ASCII-Datei im Editor Vim, erscheinen wie von Geisterhand ^M-Zeichen (Abbildung 1). Des Rätsels Lösung: Die beiden Systeme nutzen eine unterschiedliche Kennzeichnung für Zeilenenden. Während unter Windows der Zeilenumbruch durch \r\n repräsentiert wird, fällt bei Linux das \r weg; ein \n genügt.
Um ASCII-Dateien zwischen den beiden Systemen auszutauschen, können Sie wiederum tr einsetzen. Der Aufruf
tr -d '\r' < wintext > linuxtext
entfernt die zusätzlichen \r am Zeilenende und konvertiert so die Textdatei. Dabei sorgt der Parameter -d dafür, dass das genannte Zeichen verschwindet. Danach liest das Kommando durch den Operator < die Datei wintext ein und schreibt schließlich die Ausgabe mit > in die "gesäuberte" Datei linuxtext.



