regex
jasmin
- perl
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
Hi,
hat wer eine ahnung?
jeder, der in
perldoc perlre
gelesen hat, welche Bedeutung der Punkt hat.
Cheatah
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?
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
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
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...