Regulärer Ausdruck mit grep

13/05/2010 - 22:06 von Jan Kolarik | Report spam
Hallo,

ich habe hier ein HTML-File aus dem ich gerne alle Zeilen ohne irgendwelche
HTML-Tags extrahieren möchte, der Einfachheit halber alle Zeilen ohne das
Zeichen "<".

Wieso funktioniert folgendes nicht? (jetz unabhàngig davon wie man HTML-Tags
sonst noch extrahieren könnte):

grep "[^<]" datei

wàhrend folgender Ausdruck durchaus die komplementàre Zeilenmenge (also
alles _mit_ dem Zeichen "<") ausspuckt:

grep "[<]" datei

... und auch mit Hilfe der Option "-v" funktionierts wie erwartet.

Laut Manual sehe ich nur für "\<" eine spezielle Bedeutung: "the empty
string at the beginning and end of a word", das sollte aber in meinem Fall
ja nicht zutreffen.

Alles nachzuprüfen zB wie folgt:

% cat datei
aaa <tag> bbb
Zeile ohne tag

% grep "[<]" datei
aaa <tag> bbb

% grep "[^<]" datei
aaa <tag> bbb <-- sollte nicht sein
Zeile ohne tag

% grep '[^<]' datei
aaa <tag> bbb <-- sollte nicht sein
Zeile ohne tag

% grep "[^\<]" datei
aaa <tag> bbb
Zeile ohne tag

% grep -v '[<]' datei
Zeile ohne tag

Ich vermute ja nur eine Kleinigkeit die ich übersehen habe. Kann mir jemand
auf die Sprünge helfen?
 

Lesen sie die antworten

#1 Realname x
13/05/2010 - 22:21 | Warnen spam
Jan Kolarik wrote:

ich habe hier ein HTML-File aus dem ich gerne alle Zeilen ohne irgendwelche
HTML-Tags extrahieren möchte, der Einfachheit halber alle Zeilen ohne das
Zeichen "<".

Wieso funktioniert folgendes nicht? (jetz unabhàngig davon wie man HTML-Tags
sonst noch extrahieren könnte):

grep "[^<]" datei



Damit werden alle Zeilen ausgegeben, die an irgendeiner Stelle ein Nicht-<
enthalten. Praktisch alle Zeilen werden dieses Kriterium erfüllen.

wàhrend folgender Ausdruck durchaus die komplementàre Zeilenmenge (also
alles _mit_ dem Zeichen "<") ausspuckt:

grep "[<]" datei

... und auch mit Hilfe der Option "-v" funktionierts wie erwartet.



grep -v "[<]" datei
ist eben nicht das gleiche wie
grep "[^<]" datei

Ähnliche fragen