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. Webmaster & Internet
  3. Entwicklung

Text zwischen zwei Tags extrahieren

    • Frage
  • andras98
  • 17. April 2012 um 23:01
  • Unerledigt
  • andras98
    10
    andras98
    Mitglied
    Reaktionen
    1
    Punkte
    911
    Beiträge
    137
    • 17. April 2012 um 23:01
    • #1

    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:

  • sutupud
    13
    sutupud
    Mitglied
    Reaktionen
    59
    Punkte
    1.659
    Beiträge
    320
    • 18. April 2012 um 00:33
    • #2

    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;

  • andras98
    10
    andras98
    Mitglied
    Reaktionen
    1
    Punkte
    911
    Beiträge
    137
    • 5. Mai 2012 um 20:37
    • #3

    hmm die xml wenn du diese von Word erstellst hat keine Zeilenumbrüche mehr ...
    Dachte es gäbe eine Word Funktion die man dafür verwenden kann? :winking_face:

    --
    Glücklicher Absolvent von 933 :wave2:

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

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

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung