<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>multiline regex</title>
    <link>http://forum.geizhals.at/feed.jsp?id=901154</link>
    <description>Geizhals-Forum</description>
    <item>
      <title>Re: Belohnung [was: Re: multiline regex]</title>
      <link>http://forum.geizhals.at/t901154,8150348.html#8150348</link>
      <description>Das schaut sehr toll aus; ich danke Dir soweit schon.&lt;br&gt;Ausprobieren tu ichs heute Nacht nimmer (ausdrucken dafuer schon, zur Eigenlektuere etc).&lt;br&gt;&lt;br&gt;Danke!&lt;br&gt;&lt;br&gt;Schoenen gesegneten Ostersonntag in Linz!&lt;br&gt;j.&lt;br&gt;edit: Womit darf ich Dich jetzt schon belohnen?&lt;br&gt;&lt;br/&gt;</description>
      <pubDate>Sat, 08 Apr 2023 21:04:51 GMT</pubDate>
      <guid>http://forum.geizhals.at/t901154,8150348.html#8150348</guid>
      <dc:creator>Psychopath</dc:creator>
      <dc:date>2023-04-08T21:04:51Z</dc:date>
    </item>
    <item>
      <title>Re: Belohnung [was: Re: multiline regex]</title>
      <link>http://forum.geizhals.at/t901154,8150346.html#8150346</link>
      <description>Das schaut sehr toll aus; ich danke Dir soweit schon.&lt;br&gt;Ausprobieren tu ichs heute Nacht nimmer (ausdrucken dafuer schon, zur Eigenlektuere etc).&lt;br&gt;&lt;br&gt;Danke!&lt;br&gt;&lt;br&gt;Schoenen gesegneten Ostersonntag in Linz!&lt;br&gt;j.&lt;br&gt;&lt;br/&gt;</description>
      <pubDate>Sat, 08 Apr 2023 21:04:51 GMT</pubDate>
      <guid>http://forum.geizhals.at/t901154,8150346.html#8150346</guid>
      <dc:creator>Psychopath</dc:creator>
      <dc:date>2023-04-08T21:04:51Z</dc:date>
    </item>
    <item>
      <title>Belohnung [was: Re: multiline regex]</title>
      <link>http://forum.geizhals.at/t901154,8150329.html#8150329</link>
      <description>Nachdem der Railjet Richtung Linz gerade WLAN bietet, ueber das gefuehlt nicht mehr als 14.4kbps gehen, hab ich mich damit ein bisschen beschaeftigt &lt;img src="zwinker.gif" width="16" height="19" align="absmiddle" alt=";)"/&gt;&lt;br&gt;&lt;br&gt;Angenommen, du hast diese Datei &lt;i&gt;tagebuch.txt&lt;/i&gt;:&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=code&gt;&lt;pre&gt;&#xD;
Mi 20.10.1985&#xD;
&#xD;
Hallo Welt&#xD;
&#xD;
Das ist mein erster Eintrag.&#xD;
&#xD;
&#xD;
&#xD;
Di 30.10.1995&#xD;
&#xD;
Irgendwann dazwischen&#xD;
&#xD;
Hier haben wir noch einiges vor uns. Wir versuchen einmal, vor dem Ende auch noch was weiterzubringen.&#xD;
Wenn das klappt, sind wir froh, denn awk hat uns gerettet. So kann es gehen!&#xD;
&#xD;
Aber wenn es nicht geht, ist es auch schoen warm.&#xD;
&#xD;
&#xD;
Blah Blah. Letzte Zeile des mittleren Eintrags. Danach mehr als drei Leerzeilen.&#xD;
&#xD;
&#xD;
&#xD;
&#xD;
&#xD;
&#xD;
&#xD;
&#xD;
Di 30.11.2025&#xD;
&#xD;
Ende der Welt&#xD;
&#xD;
Das ist mein letzter Eintrag.&#xD;
&lt;/pre&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;Und diese Datei &lt;i&gt;&amp;lt;tagebuchparser.awk&lt;/i&gt;:&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=code&gt;&lt;pre&gt;&#xD;
#!/usr/bin/awk -f&#xD;
&#xD;
&#xD;
BEGIN {&#xD;
 ARGV[0]=""&#xD;
  for (k in ARGV) {&#xD;
    begriff=ARGV[k]&#xD;
    ARGV[k]=""&#xD;
    if(begriff != "") {&#xD;
      suchbegriffe[begriff]=1&#xD;
      funde_benoetigt++&#xD;
    }&#xD;
  }&#xD;
}&#xD;
&#xD;
/^$/ {&#xD;
  leerzeilen++&#xD;
  if(leerzeilen == 3) {&#xD;
    tagebuch[eintrag_index] = eintrag_text&#xD;
    eintrag_text = ""&#xD;
  }&#xD;
}&#xD;
&#xD;
# Beginn eines Eintrags&#xD;
/(Mo|Di|Mi|Do|Fr|Sa|So) [0-9][0-9]\.[0-9][0-9]\.[0-9][0-9][0-9][0-9]/ {&#xD;
  leerzeilen=0&#xD;
  eintrag_index=$2&#xD;
}&#xD;
&#xD;
# Alles andere an Text&#xD;
/.+/ {&#xD;
  leerzeilen=0&#xD;
  eintrag_text = eintrag_text "\n" $0&#xD;
}&#xD;
&#xD;
END {&#xD;
  tagebuch[eintrag_index] = eintrag_text&#xD;
  for (idx in tagebuch) {&#xD;
    seiten_insg++&#xD;
    funde_pro_eintrag=0&#xD;
    for (bgr in suchbegriffe) {&#xD;
      if(tagebuch[idx] ~ bgr) {&#xD;
        funde_pro_eintrag++&#xD;
      }&#xD;
    }&#xD;
    if(funde_pro_eintrag == funde_benoetigt) {&#xD;
      gefundene_seiten++&#xD;
      print "-[START]----[" idx "]-"&#xD;
      print tagebuch[idx]&#xD;
      print "-[ENDE]----------------"&#xD;
      print ""&#xD;
    }&#xD;
  }&#xD;
  printf("Suche beendet. %d von %d Seiten (~%.0f%%) waren Treffer.\n",&#xD;
         gefundene_seiten, seiten_insg, (100 * gefundene_seiten / seiten_insg))&#xD;
}&#xD;
&lt;/pre&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;... dann solltest du mit Aufrufen der Art:&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=code&gt;&lt;pre&gt;&#xD;
./tagebuchparser.awk &amp;lt; tagebuch.txt Welt Ende&#xD;
&#xD;
./tagebuchparser.awk &amp;lt; tagebuch.txt mein erster Eintrag&#xD;
&lt;/pre&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;... ungefaehr das kriegen, was du haben wolltest. Oder? &lt;img src="smile.gif" width="16" height="19" align="absmiddle" alt=":)"/&gt;&lt;br/&gt;</description>
      <pubDate>Sat, 08 Apr 2023 15:07:05 GMT</pubDate>
      <guid>http://forum.geizhals.at/t901154,8150329.html#8150329</guid>
      <dc:creator>colo</dc:creator>
      <dc:date>2023-04-08T15:07:05Z</dc:date>
    </item>
    <item>
      <title>Re: multiline regex</title>
      <link>http://forum.geizhals.at/t901154,8087194.html#8087194</link>
      <description>Ich würde die Mehrzeiler einfach zu Einzeilern umwandeln und dann in denen suchen.&lt;br&gt;&lt;br&gt;Ob dir für die Umwandlung ein \n[^\n] reicht (nächste Zeile enthält Zeichen) oder du noch Zeilen mit Leerzeilen oder mit Einrückungen (Tabs, Leerzeichen) betrachten willst, das hängt von dir ab.&lt;br/&gt;</description>
      <pubDate>Fri, 24 Sep 2021 08:55:44 GMT</pubDate>
      <guid>http://forum.geizhals.at/t901154,8087194.html#8087194</guid>
      <dc:creator>traut</dc:creator>
      <dc:date>2021-09-24T08:55:44Z</dc:date>
    </item>
    <item>
      <title>Re: multiline regex</title>
      <link>http://forum.geizhals.at/t901154,8036435.html#8036435</link>
      <description>Das Problem ist dem vorigen Thread hier sehr ähnlich.&lt;br&gt;&lt;br&gt;Gesetzt dem Fall, dass ich es richtig verstanden habe und du trennst Tagebucheinträge durch 3 Newlines, dann könntest du es so lösen:&lt;br&gt;&lt;br&gt;&lt;pre&gt;&lt;br&gt;awk -v RS='\n\n\n' '/hallo.das/ {print}'&lt;br&gt;&lt;/pre&gt;&lt;br&gt;&lt;br&gt;Wobei "hallo.das" dein Suchstring ist. Der Punkt zwischen hallo und das bewirkt, das dazwischen sowohl ein Space als auch newline sein könnte. Kannst du noch flexibler machen, z.b. mit character classes `hallo[[:space:]]+dasa'&lt;br&gt;&lt;br&gt;Beispiel input für obige&amp;nbsp;&amp;nbsp;Suche:&lt;br&gt;&lt;br&gt;&lt;pre&gt;&lt;br&gt;Di 1.2.3&lt;br&gt;&lt;br&gt;hallo&lt;br&gt;das&lt;br&gt;&lt;br&gt;ist &lt;br&gt;ein&lt;br&gt;&lt;br&gt;text mit newlines und sogar einzelnen leerzeilen&lt;br&gt;&lt;br&gt;&lt;br&gt;Mi 2.2.3&lt;br&gt;&lt;br&gt;foo&lt;br&gt;bar&lt;br&gt;&lt;/pre&gt;&lt;br&gt;&lt;/pre&gt;&lt;br&gt;&lt;br&gt;PS: wenn du nur output willst kannst du print weglassen, oder dann da rein schreiben was auch immer damit weiter passieren soll&lt;br/&gt;</description>
      <pubDate>Thu, 29 Oct 2020 12:42:35 GMT</pubDate>
      <guid>http://forum.geizhals.at/t901154,8036435.html#8036435</guid>
      <dc:creator>at_emp</dc:creator>
      <dc:date>2020-10-29T12:42:35Z</dc:date>
    </item>
    <item>
      <title>Re: multiline regex</title>
      <link>http://forum.geizhals.at/t901154,8036434.html#8036434</link>
      <description>Das Problem ist dem vorigen Thread hier sehr ähnlich.&lt;br&gt;&lt;br&gt;Gesetzt dem Fall, dass ich es richtig verstanden habe und du trennst Tagebucheinträge durch 3 Newlines, dann könntest du es so lösen:&lt;br&gt;&lt;br&gt;&lt;pre&gt;&lt;br&gt;awk -v RS='\n\n\n' '/hallo.das/ {print}'&lt;br&gt;&lt;/pre&gt;&lt;br&gt;&lt;br&gt;Wobei "hallo.das" dein Suchstring ist. Der Punkt zwischen hallo und das bewirkt, das dazwischen sowohl ein Space als auch newline sein könnte. Kannst du noch flexibler machen, z.b. mit character classes `hallo[[:space:]]+dasa'&lt;br&gt;&lt;br&gt;Beispiel input für obige&amp;nbsp;&amp;nbsp;Suche:&lt;br&gt;&lt;br&gt;&lt;pre&gt;&lt;br&gt;Di 1.2.3&lt;br&gt;&lt;br&gt;hallo&lt;br&gt;das&lt;br&gt;&lt;br&gt;ist &lt;br&gt;ein&lt;br&gt;&lt;br&gt;text mit newlines und sogar einzelnen leerzeilen&lt;br&gt;&lt;br&gt;&lt;br&gt;Mi 2.2.3&lt;br&gt;&lt;br&gt;foo&lt;br&gt;bar&lt;br&gt;&lt;/pre&gt;&lt;br&gt;&lt;/pre&gt;&lt;br/&gt;</description>
      <pubDate>Thu, 29 Oct 2020 12:42:35 GMT</pubDate>
      <guid>http://forum.geizhals.at/t901154,8036434.html#8036434</guid>
      <dc:creator>at_emp</dc:creator>
      <dc:date>2020-10-29T12:42:35Z</dc:date>
    </item>
    <item>
      <title>Re: multiline regex</title>
      <link>http://forum.geizhals.at/t901154,8036374.html#8036374</link>
      <description>Soll das einmalig sein? Was willst Du mit dem Ergebnis nachher machen? Sprich: Automatische Weiterverarbeitung sinnvoll/notwendig? Oder wirklich nur schnell manuell eine handvoll Einträge raus suchen?&lt;br&gt;&lt;br&gt;Ganz allgemein: Der Texteditor &lt;b&gt;Geany&lt;/b&gt; (von dem es auch Windows Binaries gibt) hat eine ganz brauchbare RegEx-Suchen/Ersetzen Funktion. Multiline ist da auch kein Problem, das nutze ich selbst immer wieder. Ein (getestetes) Beispiel kann ich Dir aber erst liefern, wenn ich wieder am PC bin...&lt;br/&gt;</description>
      <pubDate>Thu, 29 Oct 2020 07:09:37 GMT</pubDate>
      <guid>http://forum.geizhals.at/t901154,8036374.html#8036374</guid>
      <dc:creator>killerbees19</dc:creator>
      <dc:date>2020-10-29T07:09:37Z</dc:date>
    </item>
    <item>
      <title>multiline regex</title>
      <link>http://forum.geizhals.at/t901154,8036353.html#8036353</link>
      <description>Eigentlich nicht direkt Linux, aber auch nicht Programmierung - @Mods bitte verschiebt, wohin es Euch am passendsten erscheint; danke.&lt;br&gt;&lt;br&gt;&lt;br&gt;Ich fangs andersrum an: Ausgangslage ist mein laienhaft gefuehrtes Tagebuch: Eine simple Textdatei, jeder Tag beginnt mit dem Datum in Form von &lt;i&gt;Di 89.45.2065&lt;/i&gt;, dann folgt der Text inkl. Umbruechen.&lt;br&gt;Und bis zum naechsten Tag sinds zumindest 3 Umbrueche oder Linebreaks oder \n oder wie das heisst.&lt;br&gt;&lt;br&gt;&lt;br&gt;Gibt es eine (multiline wohl) regex, die mir jetzt mit zwei darin vorkommenden Begriffen diesen ganzen Absatz (also vom Datum bis vor \n\n\n) liefert?&lt;br&gt;&lt;br&gt;Bestenfalls was einfaches unter Windows verfuegbares; awk oder sowas. perl u.dgl. waer schon mehr (Installations-)Aufwand, aber so soll es sein..&lt;br&gt;&lt;br&gt;Ich kenn mich sowieso nicht wahnsinnig aus, von multiline regexps hab ich aber echt leider keine Ahnung.&lt;br&gt;&lt;br&gt;&lt;br&gt;Ich danke Euch schon fuer Eure etwaigen Ueberlegungen, auch Absagen, wenn das mittels regexps nicht loesbar ist natuerlich.&lt;br&gt;&lt;br&gt;Beste Gruesse und gute schiache Herbstwoche!&lt;br&gt;j.&lt;br&gt;&lt;br/&gt;</description>
      <pubDate>Wed, 28 Oct 2020 21:49:09 GMT</pubDate>
      <guid>http://forum.geizhals.at/t901154,8036353.html#8036353</guid>
      <dc:creator>Psychopath</dc:creator>
      <dc:date>2020-10-28T21:49:09Z</dc:date>
    </item>
  </channel>
</rss>
