Texte verarbeiten

Wer häufig mit Texten in der Shell arbeitet, der weiß eine Reihe von kleinen Helfern rasch zu schätzen, die als Spezialisten auf reinen Textdateien arbeiten. Für die Beispiele kommt die strukturierte Datei Adressen.txt zum Einsatz (Listing 6).

Listing 6

Bayer:Anton:Hauptstraße 5:99998:Nirgendwo:25
Baier:Franz:Nebenstraße 10:99997:Auchwo:10
Müller:Karl:Rue d'Han Tien 99:93047:Ratisbonne:3
Meier:Maria:Querstraße 18:99998:Nirgendwo:43
Maier:Martina:Kreuzstraße 109:99997:Auchwo:9

Wie man unschwer erkennen kann, verhalten sich die Zeilen in den Dateien wie Datensätze, deren einzelne Felder jeweils ein bestimmtes Zeichen voneinander trennt. Mit dem Befehl cut schneiden Sie die einzelnen Felder im wortwörtlichen Sinn aus.

Die Optionen des Befehls finden Sie in der Tabelle "Cut-Optionen". Die Ausgabe von Datenfeldern (-fFelder) erfolgt in der gleichen Reihenfolge, in der diese in der Zeile stehen. Möchten Sie davon abweichen, verwenden Sie entweder Awk oder belegen verschiedene Variablen mit jeweils einem Datenfeld.

Cut-Optionen

Aktion Option
-dTrennzeichen Feldtrenner angeben
-fFelder Angabe der Felder
-s Zeilen ohne Felder auslassen
-bBytes Angabe der Bytes
-cZeichen Angabe der Zeichen

Das Listing 7 zeigt einige Funktionsbeispiele, wobei auch die Umlaute-Problematik zum Tragen kommt: In der UTF-8-Kodierung sind Umlautzeichen mehrere Bytes lang. Das führt dazu, dass bei der Ausgabe der ersten drei Bytes aus einem "Maier" zwar ein "Mai" wird, ein "Müller" aber zum "Mü" verkommt.

Listing 7

#!/bin/bash
# Ausgabe von Name, Vorname und Ort
cut -d\: -f1,2,5 < Adressen.txt
echo "-"
# Ausgabe der ersten 3 Bytes
cut -b1-3 < Adressen.txt
echo "-"
# Ausgabe der ersten 3 Zeichen
cut -c1-3 < Adressen.txt

Mit Awk Zeilen trennen

Anders als bei Cut geben Sie mithilfe des Tools Awk die Spalten einer strukturierten Textdatei wahlfrei aus. Das Trennzeichen definieren Sie dabei mit -FTrenner. Das Skript in Listing 8 zeigt den Gebrauch des Werkzeugs für diesen Einsatzbereich.

Sie sprechen dabei die Felder über deren Position im Datensatz an: Dabei steht $1 für das erste Feld, $2 für das zweite und so weiter. Die Variable $0 enthält den kompletten Datensatz.

Listing 8

#!/bin/bash
# Darstellung einzelner Spalten aus einer
# strukturierten Textdatei mittels awk
awk -F\: '{ print $2" "$4" "$1 }' Adressen.txt

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: 181 Punkte bei 11 Stimmen.
Den Beitrag bewerten: Gut / Schlecht

Infos zur Publikation

LU 12/2017: Perfekte Videos

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

Broadcom Adapter 802.11n nachinstallieren
Thomas Mengel, 31.10.2017 20:06, 2 Antworten
Hallo, kann man nachträglich auf einer Liveversion, MX Linux auf einem USB-Stick, nachträglich...
RUN fsck Manually / Stromausfall
Arno Krug, 29.10.2017 12:51, 1 Antworten
Hallo, nach Absturz des Rechners aufgrund fehlendem Stroms startet Linux nicht mehr wie gewohn...
source.list öffnet sich nicht
sebastian reimann, 27.10.2017 09:32, 2 Antworten
hallo Zusammen Ich habe das problem Das ich meine source.list nicht öffnen kann weiß vlt jemman...
Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 6 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...