AA_machine_Sergey-Nivens_123RF_38965491.jpg

© Sergey Nivens, 123RF

Textdateien bearbeiten mit Shell-Tools

Sauber verzahnt

Verbinden, trennen, umformatieren: Unter Linux gibt es zahlreiche kleine Helfer, die die Arbeit mit Textdateien perfekt beherrschen – und die dazu noch perfekt zusammenarbeiten.

Mal eben in 300 Dateien einen String in einer Datei austauschen, eine bestimmte Zeile löschen und an anderer Stelle zwei einfügen? Für den Stream Editor (Sed) kein Problem. Aber wenn es um einfachere Manipulationen geht, dann behindert die komplexe Syntax des Alleskönners mehr, als sie nutzt. Gut, dass die Vielfalt unter Linux für solche Fälle eine Reihe weiterer Tools bereithält.

Diese Alternativen sind häufig spezialisierter, weisen dafür aber eine einfachere Syntax auf. Eine Übersicht finden Sie in der Tabelle "Shell-Werkzeuge". Sofern nicht anders angegeben, funktionieren die Tools sowohl mit einer oder mehreren Dateien als auch innerhalb einer Pipe. Manche Anwendungen überlagern sich teilweise hinsichtlich der gebotenen Funktionen.

Shell-Werkzeuge

Programm Aufgabe
cat Textdateien ausgeben, mehrere vertikal zusammenfügen
tac Textdateien in umgekehrter Reihenfolge ausgeben
head Ausgabe obere Zeilen
tail Ausgabe untere Zeilen
cut Teile einer Zeile ausgeben (Datenfelder, Bytes, feste Stellen)
awk Text in Sed-ähnlicher Weise manipulieren
grep Durchsuchen von Pipes und Textdateien
less Texte anzeigen mit Suche
wc Zeichen, Wörter oder Zeilen zählen
nl Zeilen in Ausgabe nummerieren
sort Zeilen in Ausgabe sortieren
uniq mehrfache Ausgabe aufeinanderfolgender, identischer Zeilen unterdrücken
tr Suchen und Ersetzen
od Umwandeln von Text in oktale Werte
recode Zeichensätze konvertieren
expand, unexpand Leerzeichen in Tabulatoren umwandeln und umgekehrt
paste Textdateien spaltenweise (horizontal) zusammenfügen
join Textdateien horizontal zusammenfügen, gleiche Spalten nur einmal ausgeben, nur übereinstimmende "Indexwerte" ergeben eine Ausgabe, sonst fehlerhafte Ergebnisse
split Textdatei in Teile zerlegen
csplit Textdatei in Teile zerlegen, Trennung nach vorgegebenem Muster
fold Textdatei umbrechen
diff Vergleich von Textdateien

Um die Beispiele des Artikels nachzuvollziehen, kommen die Dateien a.txt, b.txt, c.txt, d.txt und e.txt zum Einsatz, deren jeweilige Inhalte Sie den Listings 1 bis**5 entnehmen können. Sie finden diese Beispieldateien ebenso wie alle Listings zu diesem Artikel auf der Heft-DVD.

Listing 1

Bauer   Anton
Meier   Manfred
Müller  Sabine
Schmidt Rosi

Listing 2

Bauer   Autofahrer
Meier   Bahnfahrer
Müller  Autofahrer

Listing 3

Meier   Manfred
Bauer   Antonius
Müller  Sabine
Schmid  Rosi

Listing 4

Meier   Manfred
Bauer   Anton
Müller  Sabine
Bauer   Anton
Schmidt Rosi
Meier   Manfred
Müller  Sabine

Listing 5

Bauer   Anton
Meier   Manfred
Müller  Sabine
Schmidt Rosi

Alles zusammen

Cat und Tac schreiben den Inhalt einer Datei auf die Standardausgabe. Die beiden Programme unterscheiden sich dabei vor allem durch die Reihenfolge der Ausgabe: Während der Befehl cat den Dateiinhalt in der ursprünglichen Reihenfolge der Zeilen bereitstellt, dreht tac ihn um. Der Umfang der Optionen beider Tools fällt unterschiedlich aus, Cat stellt hier etwas mehr Möglichkeiten bereit (siehe Tabelle "Cat-Optionen"). Insbesondere ermöglicht es das Nummerieren der Ausgabe; Leerzeilen bezieht es dabei ein. Cat eignet sich auch dazu, Textdateien aneinanderzufügen:

$ cat Datei1 Datei2 > Zieldatei

Dazu geben Sie einfach die betreffenden Textdateien an und leiten gegebenenfalls, wie in obigem Beispiel, das Ergebnis in eine Zieldatei um.

Cat-Optionen

Option Aktion
-n alle Zeilen nummerieren
-h nur Zeilen mit Inhalt nummerieren
-s leere, zusammenhängende Leerzeilen nicht ausgeben
-E Zeilenenden mit "$" markieren
-T Tabulatoren durch "^I" anzeigen

Zum Ende kommen

Mit head geben Sie den Anfang, mit tail das Ende einer Textdatei aus. Auch bei diesem Duo unterscheiden sich die verfügbaren Optionen etwas, wie die Tabelle "Optionen von head und tail" zeigt. Sie können die beiden Befehle auf Textdateien oder in Pipes anwenden.

Head/Tail-Optionen

Optionen head tail Hinweis
-nAnzahl + + Anzahl Zeilen ausgeben
-cBytes + + Anzahl Bytes ausgeben
-v + + Dateiname in der Ausgabe
-f + Dateiende fortlaufend überwachen
-s=Sekunden + Intervall zu -f

In der Praxis kommen Head und Tail hauptsächlich zum Einsatz, um eine bestimmte Anzahl von Zeilen vom Dateianfang oder -ende auszulesen. Für die Ausgabe der ersten fünf Zeilen einer Datei oder Ausgabe nutzen Sie die folgende Form:

$ head -n5 Datei

Da es sich dabei um einen häufigen Einsatz des Programms handelt, haben die Entwickler dazu eine Kurzform implementiert:

$ head -5 Datei

Das funktioniert für den Befehl tail in gleicher Weise. Beide Programme lesen von der Standardeingabe, sodass die Möglichkeit besteht, die Ausgabe eines anderen Programms entsprechend zu begrenzen.

Tail kennt die Option -f, die es ermöglicht, Ergänzungen einer Datei laufend anzuzeigen. Dies hilft vor allem beim Betrachten von Log-Dateien in Echtzeit. Mit der Option -s bestimmen Sie das Intervall, in dem das Programm die Anzeige aktualisiert; mit [Strg]+[C] beenden Sie die Ausgabe.

Beide Programme helfen dabei, bestimmte Zeilen einer Datei oder Ausgabe anzuzeigen, die an einer relativen Position liegen:

$ tail -3 Datei | head -1

Dieses Kommando liest die drittletzte Zeile der angegebenen Datei aus; für Head funktioniert das sinngemäß entsprechend.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 9 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Immer schön der Reihe nach
    Bei der Arbeit mit strukturierten Textdateien bietet Miller eine clevere Alternative zu herkömmlichen Werkzeugen wie Grep, Cut, Sed und anderen.
  • Am Fließband
    Mit Sed editieren Sie Textdaten ohne interaktive Benutzeroberfläche – auch in Pipes oder der Eingabeumlenkung. In einer einzigen Zeile lassen sich umfangreiche Editierkommandos absetzen.
  • Gut gefiltert
    Zu den häufigsten Aufgaben bei der Arbeit am Rechner zählt das Durchstöbern von Texten nach Suchmustern. Icgrep bietet hier eine moderne, parallel arbeitende und Unicode-fähige Alternative zum klassischen Grep.
  • Stream-Editor sed
    Für stets wiederkehrende Aufgaben an einer oder mehreren Dateien kann das Arbeiten mit einem reinen Text-Editor schnell mühsam werden. Mit "sed" sparen Sie jede Menge Tipparbeit.
  • 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".
Kommentare

Infos zur Publikation

LU 10/2017: Daten retten & sichern

Digitale Ausgabe: Preis € 8,50
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

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

Stellenmarkt

Aktuelle Fragen

Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 2 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...
Backup mit KUP unter Suse 42.3
Horst Schwarz, 24.09.2017 13:16, 3 Antworten
Ich möchte auch wieder unter Suse 42.3 mit Kup meine Backup durchführen. Eine Installationsmöglic...
kein foto, etc. upload möglich, wo liegt mein fehler?
kerstin brums, 17.09.2017 22:08, 5 Antworten
moin, zum erstellen einer einfachen wordpress website kann ich keine fotos uploaden. vom rechne...
Arch Linux Netzwerkkonfigurationen
Franziska Schley, 15.09.2017 18:04, 0 Antworten
Moin liebe Linux community, ich habe momentan Probleme mit der Einstellung des Lan/Wlan in Arc...