VIM gezielt Zeilen löschen

  • Ich muss aus nem textfile mit ein paar tausend Zeilen genau jene Löschen in denen eine bestimmte Ziffernfole NICHT vorkommt. Kann mir evt wer weiterhelfen?

    danke sehr

    david

    I like Toast!

  • Mit vi geht das sicher auch, ich würd da aber (e)grep verwenden:

    Code
    grep -v "was_ich_nicht_haben_will" alte_textdatei > neue_textdatei


    bzw.

    Code
    egrep -v "was_ich_nicht_haben_will" alte_textdatei > neue_textdatei


    wenn du für "was_ich_nicht_haben_will" einen regulären Ausdruck verwenden willst.

  • habs in der zwischenzeit mit dd31 und . gemacht nachdme der abstand zwischen besagten zeilen immer gleich is.

    dd31 löscht 31 zeilen und . wiederholt den letzten befehl.

    danke für deine hilfe.

    david

    I like Toast!

  • Muss es mit Vim sein? Hab da leider nicht geschafft herauszufinden, wie man das Komplement eines regulären Ausdrucks matcht, aber wenns nur darum geht, Zeilen, in denen eine Ziffernfolge nicht vorkommt zu entfernen geht das watschneinfach:

    Ein kurzes Perl-Programm, das Tie::File verwendet, bietet sich dafür auch an, wenn man Perl mag :)

    Der folgende Vim-Befehl matcht die Ziffernfolge 123 und löscht alle Zeilen, in denen 123 vorkommt, aber das ist eben genau das Gegenteil von dem was du brauchst. Schätze aber, dass man diesen Befehl nur irgendwie erweitern muss, um aufs richtige Ergebnis zu kommen.

    Code
    :g/^.*123.*$/ d


    g für global, innerhalb von // steht der Ausdruck und d ist der Delete-/Cut-Befehl.

    Restrain the specimen!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!