Textfileverarbeitung: Nur jede x.-te Zeile nehmen



  • Hallo,
    ich möchte von einem grossen Textfile zB. nur jede 4. und 5. Zeile behalten, also Zeilen 4, 5, 8, 9, 12, 13, ...
    Kann mir einer nen Tipp geben wie ich das machen kann mit einem Tool wie grep oder sed oder so?
    Danke,
    scrontch



  • Im Visual Studio geht sowas per Makro, ich vermute mal im Office auch.
    Wenn ich dich richtig verstanden habe, musst du nur:
    Aufzeichnung beginnen
    Shift+Pfeil runter
    Shift+Pfeil runter
    Shift+Pfeil runter
    Entf
    Pfeil runter
    Pfeil runter
    Aufzeichnung beenden

    ...und dann so oft abspielen wie nötig. 😉



  • Hmm, bin im VisualStudio.
    sehe aber keine Möglichkeit das Makro dann voreingestellt x mal abzuspielen.
    Weil x=10000 bei mir und ich nich wirklich lust habe zehntausendmal auf ne Taste zu drücken. 😉
    Also ein Script wär mir lieber.



  • Schreib doch kurz n Java Programm (oder C oda sonst eins)?



  • du kannst den vb code des makros doch bearbeiten und eine schleife drum herum legen



  • Kann mir einer nen Tipp geben wie ich das machen kann mit einem Tool wie grep oder sed oder so?

    Ich denke so etwas löst man mit AWK oder Perl am besten. Mit SED geht es mit viel gefrickel sicher auch irgend wie 😃

    hier mal ein kleines AWK-Script, dass das erste Feld aus jeder 4. und 5. Zeile ausgibt.

    BEGIN {
        line = 0
    }
    {
        ++line
        if(line == 4 || line == 5) {
            print $0
            if(line == 5)
                line = 1
        }
    }
    

    Einfach mittels awk -f awk-script.awk datei anwenden.

    (Oder natürlich Emacs-Keyboard-Macros ;D)

    @all
    VB, Java oder Visual Studio ist glaube ich nicht gerade das was jemand als Antwort hören will, der nach Lösungen via grep und sed fragt...



  • scrontch schrieb:

    Hmm, bin im VisualStudio.
    sehe aber keine Möglichkeit das Makro dann voreingestellt x mal abzuspielen.
    Weil x=10000 bei mir und ich nich wirklich lust habe zehntausendmal auf ne Taste zu drücken. 😉
    Also ein Script wär mir lieber.

    Du kannst die Tasten theoretisch auch einfach festhalten, wenn sich nichts anderes findet. 😉
    Strg+Shift+P ist es bei mir.

    Ich rechne halt auch die Zeit rein, die man braucht um so eine Lösung zu finden.
    Manchmal ist man mit dem länger dauernden Weg einfach schneller. :p

    PS: Man kann so ein aufgezeichnetes Makro im Nachhinein bearbeiten, ich vermute mal, dass man da auch eine Schleife einbauen kann.



  • ok, also ich hab jetzt einfach mal jeweils einen vollen Joghurtbecher auf Ctrl, Shift und P gestellt und warte ne Weile. Nur das ewige piepsen stört etwas...

    Nee, im Ernst, das Problem hat sich herledigt, da ich doch noch ne Gemeinsamkeit in den mich interessierende Zeilen gefunden habe, die ich mit grep und ner entsprechende regexp matchen konnte.
    Danke trotzdem an alle.
    Scrontch.



  • scrontch schrieb:

    ok, also ich hab jetzt einfach mal jeweils einen vollen Joghurtbecher auf Ctrl, Shift und P gestellt und warte ne Weile. Nur das ewige piepsen stört etwas...

    😃 🤡

    Nee, im Ernst, das Problem hat sich herledigt, da ich doch noch ne Gemeinsamkeit in den mich interessierende Zeilen gefunden habe, die ich mit grep und ner entsprechende regexp matchen konnte.
    Danke trotzdem an alle.
    Scrontch.

    warum hast du nicht mein cooles AWK-Script genutzt 😡 😞 *beleidigt sei* 😉



  • (Oder natürlich Emacs-Keyboard-Macros ;D)

    für's protokoll:

    C-x (
    C-n
    C-n
    C-n
    C-k
    C-k
    C-k
    C-k
    C-x )
    

    und dann 100 mal abspielen

    C-1 C-0 C-0 C-x e
    

    🤡



  • estartu schrieb:

    Ich rechne halt auch die Zeit rein, die man braucht um so eine Lösung zu finden.
    Manchmal ist man mit dem länger dauernden Weg einfach schneller. :p

    Die Zeit brauchst Du aber nur einmal, dann hast Du was praktisches gelernt und kannst das immer wieder verwenden.


Anmelden zum Antworten