Datei parsen mit SED

  • Hallo,

    ich arbeite gerade an einem Skript um folgendes zu erreichen.
    Ich komme aber nicht mehr voran. Für ein paar Tipps wär ich sehr dankbar.
    Ich habe eine Datei die folgendermaßen aufgebaut ist.

    ....action=M>/xxx/.../.../tag/0000/..../...</path>
    ....action=M>/xxx/.../.../file/333/..../...</path>
    ....action=M>/xxx/.../.../directory/555555/..../...</path>
    ....

    Das geht dann immer so weiter, der aufbau ist immer der gleiche.
    Es kommt aber in jeder Zeile "tag","file", oder "directory vor.
    Ich möchte jetzt alles in jeder Zeile von "/tag" ,"/file" oder"/directory" bis zum 2. "/"
    herauskopieren und in einer anderen Datei dann einfügen.
    Also für die erste Zeile würde ich gern /tag/0000 in die andere Datei kopieren.
    Für die 2. Zeile dann /file/333/ usw.
    Ich hoffe ihr versteht mein Problem.

    Ich hab das versucht mit sed zu lösen. Nur krieg ich es leider nicht hin das ich
    einzelne Wörter aus einer einzelnen Zeile herauskopieren kann.

    Vielen Dank für ein paar Tipps.

    gruß

    raffa

  • manman, da denk ich nutze oft die shell und dann brauch ich für sowas trotzdem ewig bis es funktioniert :roll:

    Code
    for text in `grep -oP '/(tag|file|directory)/[0-9]+/' QUELLDATEI`;  do echo $text >> ZIELDATEI; done;


  • hey,

    danke, das würde auch soweit funktionieren nur habe ich das bei meiner Frage vielleicht etwas falsch ausgedrückt.
    Also nach /tag, /file oder /directory steht nicht immer nur zahlen.
    Also es können auch Buchstaben sein.
    Zum Beispiel
    ....action=M>/xxx/.../.../tag/0000/..../...</path>
    ....action=M>/xxx/.../.../tag/abeujakm/..../...</path>
    usw...

    Also ich müsste ihm irgendwie sagen, dass er ab /tag oder /file oder /directory alles bis zum 2. / kopieren soll.
    So habe ich mir das zumindest überlegt.
    Nur bekomme ich das bis jetzt leider nicht hin....

    Aber danke schonmal, bin ich schon paar Schritte weiter.