Textdateien zerlegen

Neben den Tools, die auf den Zeilen wie auf einem Datensatz arbeiten, gibt es solche, die Textdateien zeilenweise manipulieren. Diese Programme geben einzelne Zeilen oder Bereiche einer Textdatei aus. Mit head -Zeile geben Sie entsprechend dem Wert von Zeile eine definierte Anzahl von Zeilen vom Anfang einer Datei aus, mit tail -Zeile klappt das vom Ende der Datei aus.

Kombinieren Sie beide, besteht die Möglichkeit, sogar gezielt eine einzige Zeile auszuwählen. Dazu gehen Sie vom Kopf her mit head heran und geben als Zahl die Zeile an, die Sie benötigen. Mittels tail -1 in der Pipe unterdrücken Sie dann alle anderen Zeilen.

Dieses Beispiel mag zwar wegen zweier benötigter Befehle umständlich erscheinen, aber die einfache Syntax gleicht den Nachteil sicher wieder aus (Listing 9). Das Programm hat die Aufgabe, die dritte Zeile unserer Adressdatei mit den Daten von Herrn Müller wiederzugeben.

Listing 9

#!/bin/bash
# Auslesen der dritten Zeile
head -3 < Adressen.txt | tail -1

Alternativ nutzen Sie den Stream-Editor Sed zum Ausschneiden von Zeilen. Damit sprechen Sie die gewünschte Zeile direkt an (Listing 10). Als Parameter übergeben Sie einen Bereich von Zeilen, in unserem Beispiel von Zeile 3 bis Zeile 3. Außerdem erwartet Sed eine Handlungsanweisung, in unserem Fall eine Ausgabe (p, "print").

Listing 10

#!/bin/bash
# Holen der Zeile 3 mit sed
sed -ne '3,3p' Adressen.txt

Suchen und Ersetzen

Einzelne Zeichen oder ganze Zeichenklassen löschen oder ersetzen Sie mit dem Befehl tr. Die entsprechende Option lautet -d. Die Klassen, die Sie dabei verwenden dürfen, finden Sie in der Tabelle "Zeichenklassen".

Zeichenklassen

Klasse Zeichen
[:alnum:] alphanumerische Zeichen
[:alpha:] Buchstaben
[:cntrl:] Steuerzeichen
[:digit:] Zahlen
[:graph:] Grafikzeichen
[:lower:] Kleinbuchstaben
[:print:] druckbare Zeichen
[:punct:] Satzzeichen
[:space:] Leerzeichen
[:upper:] Großbuchstaben
[:xdigit:] Hexadezimalzahlen

Listing 11 zeigt den Einsatz des Tools in der Praxis. Shell-Skripte für den Zugriff auf Datenbanken oder zum Erfassen von Daten benötigen oft eine Funktion, um den Dezimaltrenner gegen ein Komma auszutauschen. Das erlaubt numerische Eingaben mit dem Ziffernblock der Tastatur. Feldtrennern und anderen Sonderzeichen maskieren Sie mittels Backslash (\).

Listing 11

#!/bin/bash
# Dezimaltrenner tauschen
# als Funktion
dezimal () {
  a=$(echo $a | tr \. \,)
}
a=12.34
echo " Vor Funktion: $a"
dezimal
echo "Nach Funktion: $a"
echo "-"
# Feldtrenner durch Tabulatoren ersetzen
tr \: \\t < Adressen.txt
echo -e "\n--"
# Umstellung auf Großschreibung, Methode mit
# Zeichendefinitionen, nur erste Zeile wird
# ausgegeben, Sonderbehandlung ß
head -1 < Adressen.txt | tr a-zäöü A-ZÄÖÜ | tr ß SS
echo "---"
# Umstellung auf Großschreibung,
# kürzere Methode, nur erste Zeile
# wird ausgegeben, Sonderbehandlung ß
head -1 < Adressen.txt | tr [:lower:] [:upper:] | tr ß SS
echo "----"
# Löschen eines Zeichens, hier ":"
head -1 < Adressen.txt | tr -d \:

LinuxCommunity kaufen

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

Deutschland

Ähnliche Artikel

  • Verschlungene Pfade
    Mit Schleifen, Fallunterscheidungen und Funktionen programmieren Sie komplexe Skripte auf einfache und elegante Weise.
  • Mehr Komfort
    Von einfachen Abfragen bis hin zu komplexen Menüs: Mit dem Toolkit Dialog bauen Sie eine grafische Oberfläche für Shell-Skripte, die oft nicht mehr als eine zusätzliche Zeile brauchen.
  • Einführung in die Bash-Programmierung
    Skripte sollen meist wiederkehrende oder lästige Arbeiten automatisieren. Die Standard-Shell Bash stellt Ihnen dazu eine ganze Reige von Funktionen bereit. Dieser Artikel erklärt, wie Sie ihre eigenen Shell-Skripte schreiben.
  • Kreislauf
    Schleifen ermöglichen das mehrmalige Abarbeiten von Anweisungen. Dabei kann das begrenzende Ereignis sowohl außerhalb als auch innerhalb der Schleife liegen.
  • Bash-Skripte sind Programme
    Wer regelmäßig mit der Shell arbeitet, wird leicht zum Programmierer: Schreiben Sie mehrere Shell-Befehle in eine Textdatei und machen diese ausführbar, haben Sie schon Ihr erstes Shell-Skript entwickelt. Die Shell bietet als Programmiersprache aber noch viel mehr.
Kommentare
Anmerkung zu $(( ... )) in der bash
Markus (unangemeldet), Sonntag, 19. März 2017 22:47:52
Ein/Ausklappen

Die Variablen innerhalb der doppelten Klammern müssen nicht nochmals mit $ angegeben werden, die bash verträgt auch direkt den Namen:

i=5
echo $((i*2))



Bewertung: 177 Punkte bei 16 Stimmen.
Den Beitrag bewerten: Gut / Schlecht

Infos zur Publikation

LU 01/2018: FLINKE BROWSER

Digitale Ausgabe: Preis € 5,95
(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

Linux Mint als Zweitsystem
Wolfgang Robert Luhn, 13.01.2018 19:28, 1 Antworten
Wer kann mir helfen??? Habe einen neuen Laptop mit vorinstaliertem Windows 10 gekauft. Möchte g...
externe soundkarte Kaufempfehlung
lara grafstr , 13.01.2018 10:20, 3 Antworten
Hallo Ich bin auf Suche nach einer externen soundkarte.. Max 150 Euro Die Wiedergabe is...
Prozessor-Sicherheitslücke Meltdown und Spectre
Wimpy *, 06.01.2018 10:45, 2 Antworten
Ich habe heute ein Sicherheitsupdate "ucode-intel" für openSuse 42.3 erhalten. Ist damit das Prob...
LENOVO ideapad320 Touchpad Linux Mint 18
Peter Deppen, 23.12.2017 16:49, 3 Antworten
Hallo, bin Linux Anfänger und habe das Problem, dass das Touchpad auf dem LENOVO ideapad320 mit L...
PClinuxOS
Günter Beckmann, 20.12.2017 09:51, 1 Antworten
Hi, LUC, hat jemand von Euch Erfahrung mit dem in Heft 12/2017 vorgestelletn PClinuxOS? Ich...