jasmin: regex

hallo,

ich habe folgenden befehl:

perl -ne "print if /CREATE(.*?)GO/sm" temp.znd

ziel ist es mit dem regulärn ausdruck in der datei temp.znd zwischen CREATE und GO alle zeilen zu filtern, um sie danach weiterverarbeiten zu können. leider funktionierts nur wenn CREATE und GO in einer zeile stehen - also nicht multiline.
hat wer eine ahnung?

danke im voraus
jasmin

  1. Hi,

    hat wer eine ahnung?

    jeder, der in

    perldoc perlre

    gelesen hat, welche Bedeutung der Punkt hat.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi,

      hat wer eine ahnung?
      jeder, der in
      perldoc perlre
      gelesen hat, welche Bedeutung der Punkt hat.
      Cheatah

      ja, aber sollte er mit dem modifier /s . nicht auch newline matchen?

      1. Hi,

        ja, aber sollte er mit dem modifier /s . nicht auch newline matchen?

        ach so, das habe ich ganz übersehen, sorry.

        Du nutzt -n, was einem "while (<>)" entspricht. Dadurch wird die Datei zeilenweise eingelesen, so dass nicht über mehrere Zeilen gematcht werden kann.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. ach so, das habe ich ganz übersehen, sorry.

          kein problem.

          Du nutzt -n, was einem "while (<>)" entspricht. Dadurch wird die
          Datei zeilenweise eingelesen, so dass nicht über mehrere Zeilen
          gematcht werden kann.

          ok, und die alternative dazu dass er trotzdem noch die ganze datei durchläuft? (hab keine ahnung) -> danke

        2. das komische ist, wenn ich:
          perl -ne "print if m/CREATE/.m/GO/" help.txt
          mach, funktioniert alles einwandfrei. allerdings brauch ich alles was mit dem .-operator gematched wird, also () drüber. wenn ich m/CREATE/(.*?)m/GO/ mach, gibts allerdings einen synthax error, also meine variante mit m/CREATE(.*?)GO/s. so funktioniert allerdings multiline dann nicht mehr...