1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Software und Anwendungen
  3. Tools und Produktivität

VIM gezielt Zeilen löschen

    • Frage
  • davewood
  • 26. Juni 2006 um 15:01
  • davewood
    17
    davewood
    Mitglied
    Reaktionen
    9
    Punkte
    3.204
    Beiträge
    536
    • 26. Juni 2006 um 15:01
    • #1

    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!

  • Paulchen
    1
    Paulchen
    Gast
    • 26. Juni 2006 um 15:45
    • #2

    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.

  • davewood
    17
    davewood
    Mitglied
    Reaktionen
    9
    Punkte
    3.204
    Beiträge
    536
    • 26. Juni 2006 um 15:48
    • #3

    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!

  • daff
    14
    daff
    Mitglied
    Reaktionen
    11
    Punkte
    2.021
    Beiträge
    386
    • 26. Juni 2006 um 15:49
    • #4

    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:

    Code
    $ cat text
    1234
    123a
    996
    123d
    123
    667123
    234958
    
    
    $ grep 123 text > text.new
    $ cat text.new
    1234
    123a
    123d
    123
    667123
    Alles anzeigen

    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!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung