Ok, ich hab mich entschlossen etwas über sed zu schreiben. Ich werde dazu einfach unregelmäßig in mehreren Teilen ein paar Worte verlieren. Den Anfang macht heute die Einführung. Ich werde mich im Laufe dieser mini-Reihe auf Gnu Sed konzentrieren, da ich schlicht und ergreifend andere Sed Versionen nicht kenne. Verbesserungen, Kritik und so weiter werden gerne angenommen.
Sed ist die Abkürzung für Stream Editor, was soviel bedeutet wie dass es sich um einen nicht interaktiven Editor handelt, der somit für Batchverarbeitung sehr gut geeignet ist.
Während man bei einem interaktiven Editor typischerweise den Cursor bewegt und dann an bestimmten Stellen auf dem Monitor Veränderungen vornimmt, arbeitet man bei Sed in Ermangelung eines Cursors mit Aktionen, die typischerweise durch Muster oder Zeilennummern spezifiziert werden. Das klingt im ersten Moment etwas seltsam, aber man kann damit sehr flexibel mit einem einzelnen Einzeiler Muster verarbeiten. Das heißt, sed liest die zu bearbeitende Datei normalerweise zeilenweise ein, kopiert jede Zeile in einen Puffer (den Pattern-Space) und gibt die Veränderungen, so es welche gab - wieder aus.
So kann man zum Beispiel einfach in einem Input alle Vorkommen von dem falschen englischen Artikel teh durch die korrekte Version the ersetzen. Oder man kann alle Kommentarzeichen aus einer Konfigurationsdatei entfernen. Verrücktere Leute als ich, die sich wirklich mit sed auskennen, haben bereits Spiele in sed programmiert, einen Debugger implementiert, einen minimalistischen Webserver erstellt und wahrscheinlich noch einen Haufen anderer verrückter Dinge angestellt, von denen ich nichts weiß.
Dies alles, obwohl die Sprache keine Variablen kennt und nur eingeschränkte Kontrollstrukturen. Seine Sprachelemente erscheinen auf den ersten Blick etwas kryptisch und sehen oft auch aus wie Buchstabensalat. Es hat wie so viele praktische Tools seinen Ursprung in der Unix Welt und wurde 1973 oder 1974 entwickelt (Unix Version 4) als Erweiterung bzw. Nachfolger von grep und ed. Die verwendete Syntax und Lexik beeinflußte auch maßgeblich Programme wie vi, perl, awk und vermutlich auch die ein oder andere Shell.
Da sed daher so weit verbreitet ist, gehört es auch zum Single Unix Specification, welches u.a. Schnittstellen und typische Utilities definiert, die auf einem System vorhanden sein müssen, um sich Unix nennen zu dürfen. Damit ist der grundsätzliche Befehlsatz und die Grammatik von sed, die man erwarten kann auch schon standardisiert.
Ich denke, damit hab ich kurz das Wichtigste beschrieben, um zu verstehen worum es eigentlich geht. Fortsetzung folgt.
Tuesday, 24. March 2009
Eine kleine Einführung in sed, Teil 1
Trackbacks
Trackback specific URI for this entry
No Trackbacks
