Text zwischen zwei Tags extrahieren

NetzUnity und Informatik-forum wurden zusammengelegt. Eine entsprechende Ankündigung wird demnächst noch folgen. Für 2025 ist hier einiges geplant! Bei Fragen bitte per DM an Maximilian Rupp wenden.
  • Hi!
    Ich habe ein riesiges Textfile in dem viele Daten stehen. Manche haben zwei Tags (TagA, TagB) die sie begrenzen. Ich bräuchte eine Idee wie ich die Inhalte zwischen den Tags am besten extrahiere und in eine Datei schreibe.
    Ich wollte sie mit grep bekommen was aber scheiterte da die Daten innerhalb der Tags auf übere mehrere Zeilen gehen können.

    Code
    Blablabla Blablabla Blablabla, Blablabla - öööö Blablabla TagA Dieser Text ist 
    wichtig und kann über mehrere Zeilen gehen ... TagB Blablabla Blablabla
    Blablabla
    BlablablaBlablabla Blablabla Blablabla, Blablabla - öööö Blablabla TagA Auch dieser Text ist 
    wichtig und kann über mehrere Zeilen gehen ... TagB Blablabla Blablabla
    Blablabla
    Blablabla

    Output sollte dann sein:

    Code
    Dieser Text ist wichtig und kann über mehrere Zeilen gehen
    Auch dieser Text ist wichtig und kann über mehrere Zeilen gehen

    Ideen?
    danke!

    --
    Glücklicher Absolvent von 933 :wave2:

  • na ja, grep arbeitet normalerweise zeile für zeile...
    mit "-z" kannst du es aber dazu zu bringen, das zu umgehen
    und im multiline-modus arbeitet man am besten mit pcre
    --> man pcrematching

    Code
    grep -Pzo '(?sm)(?<=TagA).*?(?=TagB)'

    damit sollte es eigentlich gehen...

    du brauchst hier den PCRE_DOTALL und den PCRE_MULTILINE modus - (?sm)
    die tags sollen ja nicht mit gecaptured werden, deshalb brauchst du hier lookbehind bzw. lookahad - (?<=...) (?=...)

    "All through my life I've had this strange unaccountable feeling that something was going on in the world, something big, even sinister, and no one would tell me what it was."
    "No," said the old man, "that's just perfectly normal paranoia. Everyone in the Universe has that."

    &#128513;&#128514;&#128515;&#128516;&#128517;&#128518;&#128519;&#128520;&#128521;&#128522;&#128523;&#128524;&#128525;&#128526;&#128527;&#128528;&#128530;&#128531;&#128532;&#128534;&#128536;&#128538;&#128540;&#128542;&#128544;&#128545;&#128546;&#128547;&#128549;&#128552;&#128553;&#128554;&#128555;&#128557;&#128560;&#128561;&#128562;&#128563;&#128565;&#128566;&#128567;

Jetzt mitmachen!

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