Zu den Aufzeichnungen der tutorials.de-Live-Workshops
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
1947
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    chocox chocox ist offline Mitglied
    Registriert seit
    Jul 2007
    Beiträge
    23
    Hallo zusammen,

    ich habe eine Datei, in der folgendes steht;

    Start
    Dokument 1
    Dokument 2
    Dokument 3
    Start
    Dokument 1
    Dokument 2
    Start
    usw.......

    Ich möchte mit einem Perl-Skript folgende Ausgabe erzielen;
    Start Dokument 1 Dokument 2 Dokument 3
    Start Dokument 1

    Auf Shell-Ebene konnte ich das Problem lösen, nur läuft es bei großen Dateien sehr lange.
    Mit Perl hatte ich bisher noch keine Erfahrung sammeln können.

    Ich hoffe ihr könnt mir einen Tipp geben!?

    Vielen Dank
     

  2. #2
    chocox chocox ist offline Mitglied
    Registriert seit
    Jul 2007
    Beiträge
    23
    Also in shell sieht meine Lösung so aus;

    for l in `cat test.txt`; do if [ `echo $l | grep "Start" | wc -l` -gt 0 ]; then echo $a; a="$l"; else a="$a; $l"; fi; done; echo $a

    In Perl habe ich rumprobiert und bin bis jetzt bei

    perl -pi.orig -e 'undef $/;while(s/\n((Start).*?\n)/$1/g) {}' test.txt

    Aber das haut noch nicht so ganz hin...es hängt mir das Start-Zeichen hinter Dokument 1
    Dokument 1 Start
    Dokument 2
    Dokument 1 Start usw.

    ****
     

  3. #3
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.770
    Blog-Einträge
    5
    Hallo chocox,

    probier es mal mit folgendem sed-Schnipsel:
    Code bash:
    1
    
    sed -n -e '/^Start$/{x;s/\n/ /gp;d;x};H;${x;s/\n/ /gp}' test.txt

    Beispiel:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    reima@marvin:/tmp$ cat test.txt 
    Start
    Dokument 1
    Dokument 2
    Dokument 3
    Start
    Dokument 4
    Dokument 5
    reima@marvin:/tmp$ sed -n -e '/^Start$/{x;s/\n/ /gp;d;x};H;${x;s/\n/ /gp}' test.txt 
    Start Dokument 1 Dokument 2 Dokument 3
    Start Dokument 4 Dokument 5

    Grüße,
    Matthias
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

Ähnliche Themen

  1. Listbox ohne Leerzeile
    Von TheLuCKer im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 22.09.04, 15:16
  2. Zeilenumbruch / Leerzeile
    Von Sanic im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 01.03.04, 08:08
  3. Leerzeile entfernen klappt nicht
    Von toboli im Forum PHP
    Antworten: 2
    Letzter Beitrag: 10.02.04, 10:58
  4. leerzeile nach dem button?
    Von stekoe im Forum CSS
    Antworten: 2
    Letzter Beitrag: 30.06.03, 22:02
  5. Leerzeile bleibt über
    Von d4k4 im Forum PHP
    Antworten: 4
    Letzter Beitrag: 24.10.02, 10:53