[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: sed und Asterisk
[Thread Prev] | [Thread Next]
- Subject: Re: sed und Asterisk
- From: "Raphael H. Becker" <Raphael.Becker@xxxxxx>
- Date: Wed, 23 Aug 2006 18:32:45 +0200
- To: uugrn@xxxxxxxxxxxxxxx
On Wed, Aug 23, 2006 at 06:03:15PM +0200, Markus Bucher wrote: > sed 's/<font*>//g' html_datei.html > neue_datei.html > und > sed 's/<\/font>//g' html_datei.html > neue_datei.html > saemtliche font-tags zu entfernen. Leider scheint hier der Asterisk * nicht > zu funktionieren. Regular Expressions sind keine "Wildcards" und umgekehrt. Der * hat hier die Bedeutung von "vorangegangener Ausdruck beliebig haeufig" Probiers mal (ungetestet) mit: sed -e 's,<font[^>]*>,,g' < eingabe.html > ausgabe.html In Worten ausgedrueckt: Ersetze "<font" gefolgt von einem beliebigen Zeichen ausser ">" gefolgt von ">" durch "" Viele wuerden dort einfach ".*" verwenden, was fuer "beliebiges Zeichen (.) beliebig oft (*)" steht. Das ist aber zu "gefraessig", denn das wuerde auch das ">" mit"fressen". [] Beschreibt eine sogenannte Zeichenklasse, d.h. benannte Zeichen (zB [abcxyz]) oder Zeichenbereiche (zB [a-z]). Literale "-" in einer Zeichenklasse muessen hinten stehen, also zB "[A-Za-z0-9_+;:,-]" Das "^" am Beginn der Zeichenklasse negiert die Aussage. [^>] Beschreibt also "beliebiges Zeichen ausser >", [^>]* entsprechend dann "beliebig viele Zeichen ungleich >" Das "^" hat ausserhalb von Zeichenklassen die Bedeutung "Zeilenanfang", was keinesfalls verwechselt werden darf. Uebrigens: Eine sehr gute Sammlung von sed-Anwendungsbeispielen ist unter http://sed.sourceforge.net/sed1line.txt zu finden. Tiefgehendes Wissen zu Regular Expressions, verschiedene "Maschinen" etc behandelt die entsprechende Literatur, z.B. * http://www.oreilly.de/catalog/regex2ger/index.html * http://www.oreilly.de/catalog/regexpprger/index.html ... oder die englischsprachigen Versionen davon. Ich hab die erste Auflage und werde die mal zum Stammtisch heute abend mitbringen, verleih ich gerne mal zum "reinschnuppern". Uebrigens: gerade bei html oder Verzeichnissen kommt ziemlich haeufig "/" literal vor. sed versteht auch andere Trennzeichen, ich verwende z.B. gerne das Komma als Trennzeichen. Andere beliebte Zeichen sind ":" oder "|". Grundsaetzlich ist es lesbarer, wenn man auf "\" verzichten kann, zumal dieses Zeichen auch "obendrueber" interpretiert wird, z.B. von der ausfuehrenden Shell, wenn man sie laesst. MfG -- Raphael Becker http://rabe.uugrn.org/ http://schnitzelmitkartoffelsalat.und.rahmspin.at/ .........|.........|.........|.........|.........|.........|.........|.. -- http://mailman.uugrn.org/mailman/listinfo/uugrn