AA_123rf-27550598-zefart-123RF.jpg

© zefart, 123RF

Workshop: Einführung in den Stream-Editor Sed

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.

Mit dem Stream-Editor Sed [1] bearbeiten Sie Textdateien ohne einen ausgewachsenen Editor. Seine Stärken spielt er insbesondere bei sich wiederholenden Bearbeitungsvorgängen aus, die sich mithilfe von Shell-Skripten automatisieren lassen. Mit regulären Ausdrücken (Englisch: "regular expressions") steht dem Kommandozeileneditor ein mächtiges Werkzeug zur Seite. Hier übergeben Sie dem Editor eine Beschreibung der Beschaffenheit der zu bearbeitenden Zeichenkette, sodass dieser große Textbestände ohne Zutun automatisiert abarbeitet.

Programmaufruf

Sed nimmt von allen Ecken Kommandos und Daten entgegen: Sie hängen diese entweder an den Aufruf an oder lassen Sed die gewünschten Kommandos aus einer Datei auslesen. Die zu bearbeitenden Daten kommen entweder per Pipe, Eingabeumlenkung oder direkt aus einer Textdatei. Die Ausgabe erfolgt entweder auf auf die Standardausgabe STDOUT (also in der Regel den Bildschirm), per Pipe an den nächsten Befehl oder durch Ausgabeumlenkung in eine Zieldatei. Sed selbst überschreibt hingegen in den Ausgangsdaten nichts.

Listing 1 zeigt eine Reihe von allgemeinen Beispielen. In Zeile 1 liest Sed eine Textdatei ein und gibt das Ergebnis auf der Standardausgabe aus. Im Zeile 2 geschieht dasselbe, allerdings mit Eingabeumlenkung. Zeile 3 zeigt das Anhängen von Sed per Pipe an die Ausgabe eines Programms. In Zeile 4 liest Sed sämtliche Anweisungen aus einer eigens für ihn erstellten Skript-Datei; alternativ geben Sie Sed mehrere Kommandos mit (Zeile 5).

In einigen Fällen wirkt sich die Reihenfolge der Befehle auf das Ergebnis aus. Testen Sie in daher in jedem Fall die Skripte ausgiebig, bevor Sie sie der auf den Datenbestand loslassen. In den Zeilen 6 und 7 leitet Sed seine Ausgabe in eine Zieldatei weiter, wobei im letzten Beispiel auch etwaige Fehlermeldungen dort landen.

Listing 1

$ sed Kommando Textdatei
$ sed Kommando < Textdatei
$ Programm | sed Kommando | ...
$ sed -f Skript ...
$ sed -e Kommando1 -e Kommando2 ... -e KommandoN Textdatei
$ sed Kommando > Zieldatei
$ sed Kommando > Zieldatei 2>&1

Syntax

Sed benötigt für das Editorkommando immer eine oder mehrere Adressen, auf die er das Kommando anwendet, wobei die grundlegende Syntax folgendermaßen aussieht:

$ sed [-Optionen] [Adresse[, weitere Adressen]] [!] Kommando [Argumente]

Als Adressen dienen oft Zeilennummern, wobei $ für die letzte Zeile steht, oder auch reguläre Ausdrücke (/.../). Sed nimmt beliebig viele Adressen entgegen, sofern Sie dabei nicht die Übersicht verlieren. Soll Sed an allen Textstellen außer den adressierten Passagen aktiv werden, kehren Sie eine Adressierung mittels ! einfach um (Negierung). Die Optionen zu Sed und seinen Editierkommandos finden Sie im weiteren Verlauf des Beitrages.

Um mehrere Sed-Kommandos auf einem Rutsch auszuführen, nutzen Sie am besten Sed-Skripte. Diese bestehen aus genau einer Zeile pro Anweisung (Listing 2). Möchten Sie das Skript von der Kommandozeile direkt ausführen, geben Sie /bin/sed in der ersten Zeile als Interpreter-Anweisung ("Shebang") vor. Die Erste der zwei folgenden Anweisungen entfernt zuerst das Wort "Gans". Genauer gesagt, tauscht die Anweisung das Wort gegen nichts aus. Die zweite Anwendung ersetzt bei jedem Vorkommen (Option g am Ende der Anweisung) den String "jo" gegen "Jo".

Listing 2

#!/bin/sed -f
s/Gans//
s/jo/Jo/g

Machen Sie das Skript ausführbar (etwa über chmod +x Skript), dann lässt es sich wie jedes andere Programm oder Skript direkt von der Kommandozeile aus – ohne das Sed-Kommando davor – aufrufen. Im Regelfall nehmen Sie von dieser Möglichkeit jedoch selten Gebrauch. Vielmehr bringen Sie sed und eventuelle Aufrufe von Skript-Dateien in einem Shell-Skript unter.

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 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

Fernstudium Informatik
Joe Cole, 12.12.2017 10:36, 1 Antworten
Hallo! habe früher als ich 13 Jahre angefangen mit HTML und später Java zu programmieren. Weit...
Installation Linux mint auf stick
Reiner Schulz, 10.12.2017 17:34, 3 Antworten
Hallo, ich hab ein ISO-image mit Linux Mint auf einem Stick untergebracht Jetzt kann ich auch...
Canon Maxify 2750 oder ähnlicher Drucker
Hannes Richert, 05.12.2017 20:14, 4 Antworten
Hallo, leider hat Canon mich weiterverwiesen, weil sie Linux nicht supporten.. deshalb hier die...
Ubuntu Server
Steffen Seidler, 05.12.2017 12:10, 1 Antworten
Hallo! Hat jemand eine gute Anleitung für mich, wie ich Ubuntu Server einrichte? Habe bisher...
Tinte sparen bei neuem Drucker
Lars Schmitt, 30.11.2017 17:43, 2 Antworten
Hi Leute, ich habe mir Anfang diesen Monats einen Tintenstrahldrucker angeschafft, der auch su...