erstmal: die code (eigentlich generell alle hier verwendeten) tags terminiert man mit einem slash, nicht backslash, also: [
/code]
desweiteren: nimm dir nochmal zu herzen, was wolfgang gesagt hat, die regex
ist keine schreibweise für: "a nicht matchen", sondern für "matche ein zeichen, welches kein a ist". klingt gleich, oder? aber beachte: bei der zweiten formulierung wird explizit klar, dass etwas gematcht werden soll, und nicht, dass etwas
nicht gematcht werden soll, denn das können regexes (afaik) nicht. negated character classes sind ja auch eigentlich nur kurzschreibweisen.
die character class matcht halt jedes zeichen bis auf eine 7, aber das explizit zu schreiben, wäre recht nervig, deswegen diese abkürzung...
nunja, es gibt noch lookahead und lookbehind, mit denen man das vielleicht gefrickelt kriegen könnte, aber generell würde ich sagen: das isses nicht wert.
man könnte auch sowas mit perl machen zb:
Code:
cat datei | perl -pe 's/.*(asdf)+.*//sg'
das würde alle zeilen, in denen "asdf" vorkommt löschen, allerdings um den "umweg" des matchens und dann durch "nichts" substituierens...
dein code btw:
mal angenommen, der *würde* so funktionieren: der würde dann auf jede zeile matchen, in der ein string vorkommen würde, der nicht auf "asdf" passt, also auch diese zeile zum beispiel:
das "blasd" könnte gematcht werden, ohne der "negierten" regex "in die quere zu kommen"(wobei das ziemlich theoretisch ist, da reguläre ausdrücke AFAIK so nicht funktionieren..). außerdem sollte man den asterisken (*) niemals isoliert in einer regex verwenden, weil das dann auch leere strings matcht, ...
aber wie gesagt: denke bei regulären ausdrücken lieber daran, was gematcht werden soll. so ziemlich jedes regex-tool das ich kenne, kann dann diese ergebnisse auch "herausfiltern". also quasi genau was du willst...
mal 'ne frage: was ist los mit "egrep -v", dass du's nicht benutzen willst? klingt wie für dich geschaffen...
@ausführungen über reguläre ausdrücke: ich lass mich sehr gerne eines besseren belehren, vielleicht kann man ja doch "nicht matchen"? o: