Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

 << zurück
Shell-Programmierung von Jürgen Wolf
Einführung, Praxis, Referenz
Buch: Shell-Programmierung

Shell-Programmierung
782 S., mit CD, 44,90 Euro
Rheinwerk Computing
ISBN 3-89842-683-1
gp Kapitel 12 Der Stream-Editor sed
  gp 12.1 Funktions- und Anwendungsweise von sed
    gp 12.1.1 Wohin mit der Ausgabe?
  gp 12.2 Der sed-Befehl
  gp 12.3 Adressen
  gp 12.4 Kommandos, Substitutionsflags und Optionen von sed
    gp 12.4.1 Das a-Kommando – Zeile(n) anfügen
    gp 12.4.2 Das c-Kommando – Zeilen ersetzen
    gp 12.4.3 Das d-Kommando – Zeilen löschen
    gp 12.4.4 Die Kommandos h, H, g, G und x – Arbeiten mit den Puffern
    gp 12.4.5 Das Kommando i – Einfügen von Zeilen
    gp 12.4.6 Das p-Kommando – Patternspace ausgeben
    gp 12.4.7 Das Kommando q – Beenden
    gp 12.4.8 Die Kommandos r und w
    gp 12.4.9 Das Kommando s – substitute
    gp 12.4.10 Das Kommando y
  gp 12.5 sed-Scripts


Rheinwerk Computing

12.5 sed-Scripttoptop

Neben der Methode, den sed-Befehl in den Shellscripts wie übliche Befehle oder sed in der Kommandozeile zu verwenden, haben Sie noch eine dritte Möglichkeit, nämlich echte sed-Scripts zu schreiben. Der Vorteil ist, dass Sie so immer wieder verwendete sed-Kommandos gleich zur Hand haben und vor allem bei etwas längeren sed-Kommandos den Überblick behalten. Das sed-Script können Sie natürlich trotzdem in einem Shellscript verwenden, nur benötigen Sie dann neben dem Shellscript auch noch das sed-Script.

Damit sed weiß, dass es sein Kommando aus einer Datei erhält, müssen Sie die Option –f (file) verwenden. Die Syntax:

sed -f sed_script.sed Datei

Folgendes müssen Sie beim Verwenden von sed-Scripts beachten:

gp  Mehrere Kommandos in einer Zeile müssen durch ein Semikolon getrennt werden.
gp  Keine Leerzeichen, Tabulatoren etc. vor und nach den Kommandos
gp  Eine Zeile, die mit # beginnt, wird als Kommentar behandelt.

Hier ein einfaches sed-Script, mit dem Sie eine Textdatei in eine HTML-Datei einbetten können:

# Name: text2html.sed
# Sonderzeichen '<', '>' und '&' ins HTML-Format
s/&/\&amp;/g
s/</\&lt;/g
s/>/\&gt;/g
# Zeile 1 selelektieren wir mit insert für den HTML-Header
1 i\
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"\
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\
<html>\
<head>\
<title>\
Converted with txt2html.sed\
</title>\
</head>\
<body>\
<pre>
# Hier kommt der Text der Datei hin
# Mit append hängen wir den Footer ans Ende
$ a\
</pre>\
</body>\
</html>

Dieses Script können Sie nun wie folgt anwenden:

you@host > sed -f text2html.sed mrolympia.dat > mrolympia.html
you@host > cat mrolympia.html
<head>
<title>
Converted with txt2html.sed
</title>
</head>
<body>
<pre>
Larry Scott USA 1965 1966
Sergio Oliva USA 1967 1968 1969
Arnold Schwarzenegger Österreich 1970 1971 1972 1973 1974 1975
Franco Columbu Argentinien 1976 1981
Chris Dickerson USA 1982
Samir Bannout Libanon 1983
Lee Haney USA 1984 1985 1986 1987 1988 1989 1990 1991
Dorian Yates Grossbritannien 1992 1993 1994 1995 1996 1997
Ronnie Coleman USA 1998 1999 2000 2001 2002 2003 2004
</pre>
</body>
</html>

Dieses HTML-Dokument können Sie sich nun mit einem beliebigen Webbrowser Ihrer Wahl ansehen. In einem Shellscript mit vielen Dateien auf einmal können Sie das Ganze wie folgt realisieren:

# Alle Dateien aus der Kommandozeile; alternativ könnte hier auch
# das Metazeichen * verwendet werden, sodass alle Dateien aus dem
# aktuellen Verzeichnis bearbeitet werden
for file in "$@"
do
   sed -f txt2html.sed $file > temp
   # Achtung, hier wird das Original verändert!!!
   mv tmp $file
done

Hinweis   An dieser Stelle muss ich nochmals darauf hinweisen, dass eine Umleitung wie sed -f script datei > datei deshalb nicht funktioniert, weil die Eingabe die Ausgabe überschreiben würde.


Jetzt haben Sie noch eine weitere Möglichkeit, sed zu verwenden und zwar als eigenständiges Programm. Hierzu müssen Sie nur die Ausführrechte entsprechend setzen und in der ersten Zeile Folgendes eingeben:

#!/usr/bin/sed -f

Jetzt können Sie (im Beispiel nochmals das text2html-Script) das sed-Script wie ein gewöhnliches Shellscript ausführen:

you@host > chmod u+x text2html.sed
you@host > ./text2html.sed mrolympia.dat > mrolympia.html

Hinweis   Eine interessante Sammlung von sed-Scripts (auch von weiteren Dokumentationen, Links etc.) finden Sie unter http://sed.sourceforge.net/grabbag/.

Hinweis   sed unterstützt übrigens auch Sprungziele (label) – einen unbedingten Sprung (es wird also immer gesprungen). Diesen Hinweis wollte ich geben, falls Sie sich noch intensiver mit den sed-Scripts auseinander setzen wollen.




Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

 << zurück
  
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Shell-Programmierung
Shell-Programmierung
bestellen
 Buchtipps
Zum Rheinwerk-Shop: Shell-Programmierung






 Shell-Programmierung


Zum Rheinwerk-Shop: Linux-Server






 Linux-Server


Zum Rheinwerk-Shop: Das Komplettpaket LPIC-1 & LPIC-2






 Das Komplettpaket
 LPIC-1 & LPIC-2


Zum Rheinwerk-Shop: Linux-Hochverfügbarkeit






 Linux-
 Hochverfügbarkeit


Zum Rheinwerk-Shop: Linux Handbuch






 Linux Handbuch


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2005
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern