Suche negieren von vim wie bei sed

Z

zielscheibe

Mitglied
Hallo NG!

Gibt es bei VIM keine Möglichkeit die suche wie bei sed
zu negieren ?
Wenn ich also alle Zeilen finden will die NICHT xyz enhalten !?
 
Hallo
Natürlich gibt es das. Wenn du dich mit regulären Ausdrücken einigermaßen auskennst, ist das kein Problem.
Unter vim 5.x ist die Syntax für die Negation genauso wie bei sed.
[^xyz] nimmt alles ausser xyz.

Schau auch mal hier rein.

Gruß Wolfgang
 
Hallo Wolfgang!

Jo, das mit den RegEx ist mir bekannt.
Dachte, es gäbe vielleicht wie beim SED
einen Parmater (glaube -v ) mit dem man
das erreichen kann.
Trotzdem Danke, werde mir mal den Link
noch zu Gemüte führen...
 
Wolfgang schrieb:
Hallo
Natürlich gibt es das. Wenn du dich mit regulären Ausdrücken einigermaßen auskennst, ist das kein Problem.
Unter vim 5.x ist die Syntax für die Negation genauso wie bei sed.
[^xyz] nimmt alles ausser xyz.

Schau auch mal hier rein.

Gruß Wolfgang
Und wie wendet man das '^' auf ein ganzes Wort an? Wenn es nicht innerhalb von eckigen Klammern steht, bedeutet es Zeilenanfang, wenn es innerhalb eckiger Klammern steht, werden die Zeichen darin doch einzeln abgearbeitet und nicht als Wort aufgefasst, oder nicht? [^xyz] bedeutet dann (nicht x und nicht y und nicht z). Wenn man nach einem Wort sucht, bringt einen das doch nicht weiter??
 
Hallo @rikola

Das Problem welches du hier schilderst ist mit regulären Ausdrücken generell nicht direkt lösbar. Auch nicht mit sed und perl usw.
Dafür verwendet man üblicherweise die Negation der einzelnen Zeichen und kombiniert diese zu Gruppierungen.
\([^a][^u][^c][^h]\) Hier nicht a gefolgt von nicht u gefolgt von nicht c .... =auch
Oder der Programmfluss steuert das abhängig von positiven Matching.
Hier würde ich beispielsweise sagen können , ersetze nur,wenn nicht "auch" gefunden wird.

Das ist aber dann abhängig von der Anwendung und der Scriptsprache.

In perl gibt es da so schöne Konstrukte, wo ich der Aktion noch eine Bedingung hinterher werfen kann.8)

tr/a/A/g unless (/\bauch\b/) würde z.B. a durch A ersetzen, wenn das gematchte Wort nicht "auch" an einer Wortgrenze ist. Ich könnte natürlich auch mit next, break usw. weitermachen, um bestimmte Zeichengruppen/Wörter auszuschließen.

ergo Negation ;)

Hoffe etwas zur Klarheit beigetragen zu haben.
Gruß Wolfgang
 
Zuletzt bearbeitet:

Ähnliche Themen

sed - Bitte um Unterstützung

sed in awk

Mount einer NAS-Platte

Ini. Script > SSH aktivieren?

Samba 4 aus repository über lokale Source-Installation installieren?

Zurück
Oben