Beispieldaten

Für erste Übungen nutzen Sie die in Listing 3 dargestellte Telefonliste. Speichern Sie den Inhalt dieser Tabelle in textdatei.txt ab. Die Tabelle sieht bewusst etwas wüst und zusammengeflickt aus: Leerzeilen, Rechtschreibfehler und andere Makel verunzieren sie. Mit Sed lassen sich diese Fehler jedoch leicht korrigieren – eine große Arbeitserleichterung, besonders dann, wenn es eine Datenbank mit mehreren Tausend Einträgen zu pflegen gilt. Die zweite Spielwiese in Listing 4 beinhaltet eine Liste mit grob unterschiedlich geschriebene Datumsangaben. Auch diese normiert Sed im Handumdrehen. Speichern Sie den Inhalt für den weiteren Gebrauch unter testliste.txt ab.

Listing 3

johann johannson  0885465468798746
Klaus Schraube  08755466584
Hans Michael  0987654321
Jochen Hansen  0405458765143321
Gabi Gans Meier   0548/9988776655

Listing 4

22 April 1984
 7.04.1985
30 März 1986
19 April 1987
03.04.1988
26 März 1989
15 April 1990
31-März-1991
19 April 1992
11 April 1993
 3 April 1994
16. April 1995
 7 April 1996
30 März 1997
12 April 1998

Reguläre Ausdrücke

Beim Ausführen von Sed-Befehlen kommen sehr oft reguläre Ausdrücke zum Einsatz, um Zeichenausdrücke aus dem Text herauszufiltern. Selbst wenn Sie den Ausdruck bisher noch nicht kennen, kennen Sie höchstwahrscheinlich reguläre Ausdrücke schon und nutzen sie regelmäßig: Wildcards wie in ls *.txt entsprechen einem regulären Ausdruck, und Texteditoren bieten über die Suchen-und-Ersetzen-Funktion oft eine Implementation für reguläre Ausdrücke.

In der Regel machen reguläre Ausdrücke jedoch deutlich mehr Arbeit. Mit ein wenig Logik bekommen Sie einfachere Ausdrücke allerdings gut in den Griff. Eine einfache Anweisung lautet zum Beispiel [ABC], sie prüft ob der String auf A, B oder C lautet. Das Konstrukt /ABC/ filtert hingegen auf den zusammenhängenden Begriff "ABC". Den Aufbau und den Gebrauch regulärer Ausdrücke vollständig zu erklären, würde den Umfang dieses Artikels sprengen, daher finden Sie auf der beiliegenden Heft-DVD einen Artikel zu ersten Schritten mit Regular Expressions aus LinuxUser 06/2015 [2].

Zu so viel Macht reguläre Ausrücke Sed auch verhelfen, so unübersichtlich wachsen die Anweisungen komplexer Aufgaben. Hier hilft oft der Einsatz von Sed-Skripten, die die Aufgabe in mehrere Teile aufspalten. Einige Zeichen innerhalb der Konstrukte gelten zudem sowohl als Sonderzeichen der Shell als auch als Anweisungen für die regulären Ausdrücke. Sie müssen diese deshalb mit dem Zeichen \ für die Shell entwerten oder auf neuhochdeutsch "escapen" (siehe Tabelle "Sonderzeichen").

Sonderzeichen

Zeichen Hinweis Sed-Funktionalität
( öffnet eine Anweisung
) schließt die Anweisung
{ öffnet optionale Anweisung
} schließt optionale Anweisung
[ öffnet Klassenbeschreibung von Zeichen
] schließt Klassenbeschreibung von Zeichen
" maskiert Anweisung und löst Shell-Variable auf
' maskiert eine Anweisung, löst Shell-Variable nicht auf
` schließt Anweisungsblock ein
. ein beliebiges Zeichen außer Zeilenvorschub
, trennt Parameter, etwa Zeilenangaben
Leerzeichen Setzt Markierung (t- und b-Befehl)
$ Dokumentenende, letzte Zeile oder Zeilenende
& Platzhalter für Suchmuster, welches in der Ersetzen-Anweisung mit ausgegeben wird
| oder (Abtrennen von regulären Ausdrücken)
/ Trennzeichen in Editierkommandos
^ Anfang der Zeile, aber: [^Begriff] = Negierung
\ Entwerter
! nach Zeilenzahl: nicht diese Zeile ausgeben
* nie oder beliebig oft
+ Muster mindestens einmal vorhanden
= Ausgabe der Zeilennummer
\n neue Zeile, Zeilenvorschub
\t Tabulator

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 8 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

  • Die Kraft der Muschel
    Microsofts neue PowerShell greift auf die Bibliotheken des .NET-Frameworks zurück und verfügt so über einen riesiger Fundus von Funktionen und Objekten. Ist sie dadurch einer traditionellen Shell wie der Bash überlegen?
  • Mit Bordmitteln riesige Textdatei durchsuchen
  • Handarbeit
    Die meisten Nutzer drucken Dokumente aus einer Anwendung mit grafischer Oberfläche heraus. In einigen Situationen erweist es sich aber als sinnvoller, den Printserver Cups per Kommandozeile zu bedienen.
  • Hardcore Linux
    Dieser Teil der Serie über die Bash stellt die Grundlagen für die Arbeit mit mehreren und verketteten Befehlen auf der Bash zusammen.
  • 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.
Kommentare

Infos zur Publikation

LU 02/2018: PAKETE VERWALTEN

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

JQuery-Script läuft nicht mit Linux-Browsern
Stefan Jahn, 16.02.2018 12:49, 2 Antworten
Hallo zusammen, ...folgender goldener Code (ein jQuery-Script als Ergebnis verschiedener Exper...
XSane-Fotokopie druckt nicht mehr
Wimpy *, 30.01.2018 13:29, 0 Antworten
openSuse 42.3 KDE 5.8.7 Seit einem Software-Update druckt XSane keine Fotokopie mehr aus. Fehler...
TOR-Browser stürzt wegen Wikipedia ab
Wimpy *, 27.01.2018 14:57, 0 Antworten
Tor-Browser 7.5 based on Mozilla Firefox 52.8.0 64-Bit. Bei Aufruf von http: oder https://de.wi...
Wifikarte verhindert Bootvorgang
Maik Kühn, 21.01.2018 22:23, 1 Antworten
iwlwifi-7265D -26 failed to load iwlwifi-7265D -25 failed to load iwlwifi-7265D -24 failed to l...
sharklinux
Gerd-Peter Behrendt, 18.01.2018 23:58, 2 Antworten
Hallo zusammen, ich habe sharklinux von der DVD Installiert. 2x, jedesmal nach dem Reboot ist di...