L UGS SWITZERLAND. ed undsed. David Frey. Copyright 2004 David Frey



Ähnliche Dokumente
Stream EDitor SED und Reguläre Ausdrücke

Eine kurze Einführung in Vim

L UGS SWITZERLAND. Procmail. David Frey. V1.5 Rel 23. Juni 2002 Procmail

Unigraphics Schnittstelle entfernen

Softwarelizenzen und Open Source

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Wörterbücher von MS nach Ooo konvertieren

Listening Comprehension: Talking about language learning

Das neue Volume-Flag S (Scannen erforderlich)

Es gibt zahlreiche Web-Programmiersprachen: HTML, CSS, JavaScript, PHP, Perl, Python, HTTP, XML und viele weitere.

Einführung in LINUX Der Editor vi

Zur drittletzten Zeile scrollen

Wie gestaltet man Online-Umfragen mit SurveyMonkey?

Löschen eines erkannten aber noch nicht konfigurierten Laufwerks

BartPE. Dokumentation. Projektarbeit Network Services. Dozent: Wolf-Fritz Riekert. Belmondo Kovac. Autor: Andreas Dinkelacker, 3.

Einführung in Javadoc

X Anmelden am System. X System herunterfahren. X Grundlegendes zur Shell. X Das Hilfesystem. X Dateioperationen. X Bewegen im Verzeichnisbaum

GNU Emacs-Referenzkarte

Anwendungsbeschreibung an einem Beispiel

... MathML XHTML RDF

GEONET Anleitung für Web-Autoren

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

ZENTRALER INFORMATIKDIENST DER JOHANNES KEPLER UNIVERSITÄT LINZ Abteilung Kundendienste und Dezentrale Systeme. PPP für Windows 3.

I.1 Die Parrot Assemblersprache

Umwandeln und Exportieren von Adobe-Illustrator-Dateien in Illustrator für Artcut

Wie Sie mit Mastern arbeiten

Adobe Reader X. Adobe Customization Wizard X. highsystem ag. Author(s): Paolo Sferrazzo. Version: 1.0 Erstellt am: Letzte Änderung: - 1 / 9

Installationscript für die Anzeige des aktuellen Moderators

XSLT Vortrag. 2. Beispiel XML. 3. Anwendungsmöglichkeiten von XSLT 4. XHTML

Webseiten sind keine Gemälde. Webstandards für ein besseres Web. Webstandards für ein besseres Web

Viele Bilder auf der FA-Homepage

Erfahrungen mit Hartz IV- Empfängern

Mojolicious. Ich zeige dir jetzt, wie du mit Mojolicious eine Vorlage. Das Mojolicious-Gerüst

Objektorientierte Programmierung

BEDIENUNG ABADISCOVER

Erwin Grüner

Programmers Manual Geodaten Ver. 2.0


Amt für Natur und Umwelt Uffizi per la natira e l ambient Ufficio per la natura e l ambiente

Versionsverwaltung mit Mercurial für Einsteiger

ein Versandsystem das immer passt HVS32 Monitoring

1CONFIGURATION MANAGEMENT

I Serverkalender in Thunderbird einrichten

Online Kataloge. Wie binde ich einen SGVSB-Online-Katalog in eine Webseite ein. Versionsnummer: 1.0 Änderungsdatum:

Wenn Russland kein Gas mehr liefert

Stata I: Analyseorganisation und erste Schritte

Installation mit Lizenz-Server verbinden

Systemvoraussetzung < zurück weiter >

SEND-IT Bedienungsanleitung

Luis Kornblueh. May 22, 2014

FLEXIMPORT. Vollständig: Name ItemNr EAN Fedas HG UG Farbe Größe Brand EK VK Menge

Arbeit zur Lebens-Geschichte mit Menschen mit Behinderung Ein Papier des Bundesverbands evangelische Behindertenhilfe e.v.

Python SVN-Revision 12

Umbenennen eines NetWorker 7.x Servers (UNIX/ Linux)

Werkzeuge der Informatik UNIX

Der zweite all unsere Datenbanken. Dieser Befehl ist etwas komplexer, aber bis auf das Passwort (kursiv fett) so zu übernehmen:

MySQL Queries on "Nmap Results"

Objektorientiertes Programmieren mit Suse Linux

Feiertage in Marvin hinterlegen

Routing im Internet Wie findet ein IP Paket den Weg zum Zielrechner?

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

rechtsbündige Leerzeichen mit einlesen im Datastep

BMC Control M Tipps & Tricks 3

ICON Switzerland 2015 Praxisbeispiel Connections an der Universität Zürich

Frankfurt am Main. Dortmund. Stuttgart. Düsseldorf

DVB-T EuroMini100 Seite 1 von 10

Anleitung für die Teilnahme an den Platzvergaben "Studio II, Studio IV und Studio VI" im Studiengang Bachelor Architektur SS15

Leere Zeilen aus Excel-Dateien entfernen

Professionelle Seminare im Bereich MS-Office

Metadateneditoren für ArcGIS

Webbasierende Erstellung von Comic-Videoclips

Installationsanweisung editit

So gehts Schritt-für-Schritt-Anleitung

UNIX Ein kleiner Ausschnitt

Wir machen neue Politik für Baden-Württemberg

Webalizer HOWTO. Stand:

4.) Geben Sie im Feld Adresse die IP Adresse des TDC Controllers ein. Die Standard Adresse lautet

Java Webentwicklung (mit JSP)

Wie man Registrationen und Styles von Style/Registration Floppy Disketten auf die TYROS-Festplatte kopieren kann.

CMS-Manual Bilder hochladen und einfügen

Anleitung über den Umgang mit Schildern

Visual Basic Express erstes Projekt anlegen

1.103 Regular Expressions - Reguläre Ausdrücke

Klausur in 13.1 Thema: Das Internet (Bearbeitungszeit: 90 Minuten)

Lubuntu als Ersatz für Windows

1. Einführung. 2. Alternativen zu eigenen Auswertungen. 3. Erstellen eigener Tabellen-Auswertungen

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

ASP: Active Server Pages

Anleitung für die Formularbearbeitung

AutoTexte und AutoKorrektur unter Outlook verwenden

1. Wie viel Zinsen bekommt man, wenn man 7000,00 1 Jahr lang mit 6 % anlegt?

Linux Prinzipien und Programmierung

Die. gute Idee. Erfindungen und Geschäftsideen entwickeln und zu Geld machen

Lorenz & Partners Legal, Tax and Business Consultants

SharePoint 2010 Mobile Access


Bevor lineare Gleichungen gelöst werden, ein paar wichtige Begriffe, die im Zusammenhang von linearen Gleichungen oft auftauchen.

Discovery Tool für COMbricks PROCENTEC

Website freiburg-bahai.de

Funktionale Programmierung Übung 01. Dozent: mein Dozent Tutor: mein Tutor Studenten: person1 und person2 tt. mm. jjjj

Transkript:

ed undsed David Frey Copyright 2004 David Frey Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. The author(s) would appreciate a notification of modifications, translations, and printed versions. Thank you. 1

ed: Ueberblick The cycle of editing and testing is very convenient in Visual Basic, though the facilities for viewing and editing text are so primitive that one yearns for a powerful editor like ed. Brian W. Kernighan ed ist der Unix-Standard Editor; es ist eine vereinfachte Version desqed-editors [1].qed konnte z.b. mehrere Buffer, erweiterte Regular Expressions, rechnen und war mit seinen eigenen Befehlen programmierbar. Alle diese Editoren sind Line-Editoren, d. h. man editiert Linien resp. Linienbereiche. Sie sind modal d. h. die Editoren unterscheiden zwischen Input und Command-Mode. 2

1963 1966 Zeileneditoren qed SDS940 (B. Lampson, Peter Deutsch) CTSS (Ken Thompson) TECO PDP-1 1971 ed Unix V1 (Ken Thompson) 1973 1976 ex em sed Unix V7 (Lee McMahon) emacs ITS TWENEX (Richard Stallman, Guy Steel, Dave Moon) 1976 vi (BSD) Unix (Bill Joy) 1984 1992 1994 t sam Plan 9 (Rob Pike) acme Plan 9 (Rob Pike) Lucid Emacs Unix (Jamie Zawinski et. al) xemacs Unix (Ben Wing et. al) 3

ed: Syntax und Addressen Syntax eines Kommandos: [adr 1 [,adr 2 ]]cmd[params] eine Adresse:. momentane Zeile $ letzte Zeile n n,^n nte Zeile n-zeilen zurück +n n-zeilen vorwärts,,% 1,$ ;.,$ /RE/ regular expression vorwärts?re? regular expression rückwärts m mit m markierte Zeile Ein Range besteht aus zwei Adressen: a,b a;b Zeilen [a,b] Zeilen, setze zuerst a, und berechne dann b 4

a c d e fn,e!cmd E fn f g/re/cmds ed: Befehle (1) [2] append change (replace) line delete edit file, stdout of cmd edit (unconditionally) set default file name apply cmds on lines with matching REs. G/RE/ interactively edit addressed lines with RE. h,h i j km l m print help on last error, turn off explanations insert text join lines mark line with letter m print lines move lines 5

ed: Befehle (2) [2] n p P q,q r fn,r!cmd s/re/rep/[g n] taddr u v/re/,/vre/ w[q] fn,w!cmd W fn x y zn number lines print lines toggle command prompt quit (unconditionally) read fn, stdout of cmd search & replace first/all (g)/nth match(es) copy (transfer) after addr. undo last command apply commands not matched by RE write fn, stdout of cmd append to fn put cut buffer after addressed line yank lines to the cut buffer scroll n lines. 6

!cmd ed: Befehle (3) [2] execute cmd # comment = print line number newline print addressed line and set address 7

sed sed steht für Stream Editor, die gestreamte Variante des Standard Editors,ed. Somit fallen alle Befehle, die eine Position im Stream benötigen, weg. Alle interaktiven Befehle fallen auch weg (hhptxyuz). 8

! a a append sed: Befehle (1) [3] - c change (replace) line d delete - e,e edit file - f set default file name! g/g copy/append hold space to pattern space! h/h copy/append pattern space to hold space! a i insert text - j join lines - km mark line with letter m l m print lines unambigously move lines a \ als Fortsetzungszeichen anstelle von. am Ende. 9

sed: Befehle (2) [3]! n,n read/append next line of input into pattern space p print lines! P print up to first embedded newline q,q immediately quit (q: print line if auto-print)! rfn,rfn append text/a line read from fn s/re/rep/[g n] search & replace first/all (g)/nth match(es)! tlabel branch to label on successful substitution.! Tlabel branch to label on unsuccessful substitution. - u undo last command - v/re/,/vre/ apply commands not matched by RE 10

sed: Befehle (3) [3]! wfn write current pattern space to fn! Wfn write the first line of the current pattern space to fn - x put cut buffer after addressed line! y/src/dst/ transliterate characters in pattern space - zn scroll n lines. + : label -!cmd execute cmd # comment = print line number! ; command separator! newline white space + {,} opening, closing block 11

Standardsed-Aufruf: Aufrufsyntax sed [ n] escript fscript file GNU-sed kann wie üblich ein paar Sachen mehr: sed [ nrsu][ i[suffix]][ ln] escript fscript file Aus der Manpage [3]: -n Pattern-Space nicht automatisch ausgeben -e Script folgt auf der Command-Line -f Script folgt im File -i File in-place (evtl mit Backup) editieren -l N Line-Wrap-Länge auf N setzen -r Perl Regular Expressions (ERE) verwenden -s separate Files -u unbuffered 12

Hold/Match-Space r,r w,w n,n a,i,c,d,d,s,y Pattern-Space p,p,l,= q,q h,h x g,g Hold-Space h,g,n copy (h,g), read (n) H,G,N append # comment :,b,t,t labels, branch {,} block 13

I/O-Paradigma Zeilen werden prinzipiell sequentiell gelesen und bearbeitet. : define label Flow-Control label go-to b branch unconditionally if t T branch on successful substitution branch on unsuccessful substitution N.B:sed ist turing-complete. 14

Beispiele (1) [z.t. aus [4]] cat sed n p /etc/motd Einfache Lösung: a cat n resp.nl ba sed n =;p /etc/motd sed e N; s/\([[:digit:]]\+\)\n/\1 / cat vet sed n l /etc/motd :x /^\n*$/{ N bx } s/^\(\n\)*/\1/ cat s a mit nur einem Prozess geht es auch [4] 15

Beispiele (2) [z.t. aus [4]] tac sed ne 2,$G;$p;h /etc/motd original:sed ne 1!G;$p;h /etc/motd head sed n 1,10p /etc/motd tail sed n $ 10,$p /etc/motd Es geht, ist aber kein Einzeiler ( [4]): wc l sed n $= /etc/motd wc c Es geht, ist aber kein Einzeiler ( [4]): 16

Beispiele (3) [z.t. aus [4]] rot13 leicht exotisches Beispiel: a sed e y/\ ABCDEFGHIJKLMNOPQRSTUVWXYZ\ abcdefghijklmnopqrstuvwxyz/ NOPQRSTUVWXYZABCDEFGHIJKLM\ nopqrstuvwxyzabcdefghijklm/ /etc/motd a rot13, caesar 13, tr A-MN-Za-mn-z N-ZA-Mn-za-m 17

1 Title 2 3 Header 1 4 ======== 5 komplexes Beispiel (Input) 6 Text *bold* _underlined_ /italic/ 7 URL <http://www.lugs.ch> 8 9 Header 2 10 11 12 Text *bold* _underlined_ /italic/ 13 14 o bullet 1 15 o bullet 2 16 bullet bullet 1 17 bullet bullet 2 18 o bullet 3 19 18

1 #!/bin/sed f 2 komplexes Beispiel (Script) 3 s,<\([a Za z.:/]\+\)>,<a href="\1">\1</a>, 4 t skip 5 6 s,/\([^*]*\)/,<em>\1</em>,g; 7 s,\*\([^*]*\)\*,<b>\1</b>,g; 8 s,_\([^_]*\)_,<u>\1</u>,g 9 10 :skip 11 12 1i \ 13 <!DOCTYPE HTML PUBLIC " //W3C//DTD HTML 3.2 Final//EN">\ 14 <html> 15 1{ 16 s,^,<head><title>,; s,$,</title></head>,; 17 a \ 18 <body> 19 } 20 $a \ 21 </body>\ 22 </html> 23 24 /^[ ]*[o. ]/{ 25 x 26 /^$/{ 27 s/^/ul/ 28 i \ 29 <ul> 30 } 31 x 19

32 s/^[ ]*[o. ]/<li>/ 33 } 34 35 /^$/{ 36 x 37 /^UL$/{ 38 s/^ul// 39 i \ 40 </ul> 41 } 42 x 43 } 44 45 46 N 47 /^.*\n *====* *$/{ 48 s/\n *====* *//; 49 s,^,<h1>,; s,$,</h1>, 50 } 51 52 53 /^.*\n * * *$/{ 54 s/\n * * *//; 55 s,^,<h2>,; s,$,</h2>, 56 } 57 58 P 59 D 20

komplexes Beispiel (Output) 1 <!DOCTYPE HTML PUBLIC " //W3C//DTD HTML 3.2 Final//EN"> 2 <html> 3 <body> 4 <head><title>title</title></head> 5 6 <h1>header 1</h1> 7 8 Text <b>bold</b> <u>underlined</u> <em>italic</em> 9 URL <a href="http://www.lugs.ch">http://www.lugs.ch</a> 10 11 <h2>header 2</h2> 12 13 Text <b>bold</b> <u>underlined</u> <em>italic</em> 14 15 <ul> 16 <li> bullet 1 17 <li> bullet 2 18 <li> bullet bullet 1 19 <li> bullet bullet 2 20 <li> bullet 3 21 </ul> 22 23 </body> 24 </html> 21

Vorteile sed ist für das Editieren von Streams ausgelegt; daher ist der Aufwand um etwas zu Editieren gering. Nachteile Keine Variablen ( sh,awk,m4,perl) Kann nicht rechnen ( sh,awk,m4,perl) (Standardsed) kann nicht in-place editieren ( ed[,perl]) 22

Zusammenfassung sed-programme sind fast ausschliesslich Einzeiler und werden in Pipelines in Shell-Scripts verwendet. Ab 5 10-Zeilen wird es (langsam) kompliziert. 23

Kuriosa odersed-stresstests Folgendesed-Scripts wurde von Leuten geschrieben, die Langeweile hatten und/oder mal ein bisschensed-programmierung üben wollten [5]: dc insed: /usr/share/doc/sed/examples/dc.sed Infix-Mathematik insed: /var/local/ftp/pub/copied/ source cd 1993/bsd_srcs/usr. bin/sed/math.sed Towers of Hanoi insed: /var/local/ftp/pub/copied/ source cd 1993/bsd_srcs/usr.bin/ sed/hanoi.sed 99-Bottles of Beer insed: http://www.99 bottles of beer.net/ s.html#sed Sokoban insed: http://http://aurelio.net/sed/ 24

Literatur [1] Dennis M. Ritchie. An incomplete history of the QED Text Editor. http://cm.bell labs.com/cm/cs/who/ dmr/qed.html. [2] Free Software Foundation, Inc. ed manual, November 1994. ed(1). [3] Free Software Foundation, Inc., 59 Temple Place Suite 330, Boston, MA 02111-1307, USA. sed manual, 4.1.2 edition, August 2004. sed(1). [4] Free Software Foundation, Inc., 59 Temple Place Suite 330, Boston, MA 02111-1307, USA. sed info pages, 4.1.2 edition, August 2004. info sed. [5] various. sed FAQ. http://www.faqs.org/faqs/ editor faq/sed/. [6] Brian W. Kernighan and Rob Pike. The UNIX 25

Programming Environment. Prentice Hall International, Inc., Eaglewood Cliffs, New Jersey, NJ 07632, USA, 1984. Excellent introduction into Shell Programming,sed, andawk. Discusses programming style, i.e. how to build a filter etc. ISBN 0-13-937699-2 (hardcover), 0-13-937681-X (paperback). [7] Dale Dougherty and Arnold D. Robbins. sed & awk. O Reilly & Associates, Inc., 103 Morris Street, Suite A Sebastopol, CA 95472, USA, second edition, March 1997. ISBN 1-56592-225-5. [8] Arnold D. Robbins. sed &awk Pocket Reference. O Reilly & Associates, Inc., 103 Morris Street, Suite A Sebastopol, CA 95472, USA, First edition, January 2000. ISBN 1-56592-729-X. [9] Brian W. Kernighan. A Tutorial Introduction to the UNIX Text Editor, Seventh edition, ca. 1977. 7 th edition Unix manual. 26

~ftp/pub/doc/os/unix/7thedman/ vol2/edtut.{ps,txt}.gz. [10] Lee E. McMahon. SED A Non-interactive Text Editor, Seventh edition, August 1978. 7 th edition Unix manual. ~ftp/pub/doc/os/unix/7thedman/ vol2/sed.{ps,txt}.gz. 27