hi,
eigentlich recht einfach dachte ich, aber nun funktioniert es aben nicht so, wie von mir gedacht:
perl -i -p -e 's/<Datenblatt>.*?</Datenblatt>//s' test.txt
Schnippelt alles zwischen <Datenblatt> und </Datenblatt> aus test.txt raus. Das auch noch u"ber mehrere Zeilen verteilt ... dachte ich (darum Schalter 's'). Macht er aber nicht! Es klappt aber nur, wenn alles auf einer Zeile steht!
Letztenendlich muss ich aus vielen XML-Dateien mal schnelle ein Stu"ckerl entfernen. Wer kann mir helfen?
Mit freundlichen Grüßen
Jens Puruckherr
On Wed, 2004-04-28 at 13:12, Jens Puruckherr wrote:
hi,
eigentlich recht einfach dachte ich, aber nun funktioniert es aben nicht so, wie von mir gedacht:
perl -i -p -e 's/<Datenblatt>.*?</Datenblatt>//s' test.txt
Schnippelt alles zwischen <Datenblatt> und </Datenblatt> aus test.txt raus. Das auch noch u"ber mehrere Zeilen verteilt ... dachte ich (darum Schalter 's'). Macht er aber nicht! Es klappt aber nur, wenn alles auf einer Zeile steht!
Letztenendlich muss ich aus vielen XML-Dateien mal schnelle ein Stu"ckerl entfernen. Wer kann mir helfen?
Die perlrun manpage :)
-p causes Perl to assume the following loop around your program, which makes it iterate over filename arguments somewhat like sed:
LINE: while (<>) { ... # your program goes here } continue { print or die "-p destination: $!\n"; }
Beim zeilenweisen Abarbeiten ist es schwer, Substitutionen über mehrere Zeilen hinweg zu machen. Bau dir ein richtiges Script, und joine vorm Bearbeiten den Dateiinhalt zu einem Scalar zusammen... oder so ;)
Mit freundlichen Grüßen
Jens Puruckherr
Lug-dd maillist - Lug-dd@schlittermann.de http://mailman.schlittermann.de/mailman/listinfo/lug-dd
lug-dd@schlittermann.de schreibt:
perl -i -p -e 's/<Datenblatt>.*?</Datenblatt>//s' test.txt
Beim zeilenweisen Abarbeiten ist es schwer, Substitutionen über mehrere Zeilen hinweg zu machen. Bau dir ein richtiges Script, und joine vorm Bearbeiten den Dateiinhalt zu einem Scalar zusammen... oder so ;)
Oder ein undef $/ vornedran, dann funktionierts auch :-)
Mit freundlichen Grüßen
Jens Puruckherr
"Jens Puruckherr" jpuruckherr@cyberport.de writes:
hi,
eigentlich recht einfach dachte ich, aber nun funktioniert es aben nicht so, wie von mir gedacht:
perl -i -p -e 's/<Datenblatt>.*?</Datenblatt>//s' test.txt
Schnippelt alles zwischen <Datenblatt> und </Datenblatt> aus test.txt raus. Das auch noch u"ber mehrere Zeilen verteilt ... dachte ich (darum Schalter 's'). Macht er aber nicht! Es klappt aber nur, wenn alles auf einer Zeile steht!
Weil -p dem Codeblock jede Zeile einzeln übergibt. Wenn Dein Datenblatt-Tag einzeln auf einer Zeile ist, probier sowas:
perl -ne 'print unless /<Datenblatt>/ .. /</Datenblatt>/' < test.txt
GreetinX Steffen
On Wed, Apr 28, 2004 at 01:12:42PM +0200, Jens Puruckherr wrote:
eigentlich recht einfach dachte ich, aber nun funktioniert es aben nicht so, wie von mir gedacht:
perl -i -p -e 's/<Datenblatt>.*?</Datenblatt>//s' test.txt
Einfach den input record separator umdefinieren: perl -i -p -e 'undef $/; s/<Datenblatt>.*?</Datenblatt>//s' test.txt
Alex.
On Wed, Apr 28, 2004 at 01:12:42PM +0200, Jens Puruckherr wrote:
hi,
eigentlich recht einfach dachte ich, aber nun funktioniert es aben nicht so, wie von mir gedacht:
Vielleicht hilft dir dieses Script:
http://www.thomas-guettler.de/scripts/replace-recursive.py.txt
Gruß, Thomas
lug-dd@schlittermann.de schreibt:
Vielleicht hilft dir dieses Script:
http://www.thomas-guettler.de/scripts/replace-recursive.py.txt
Wenn ich mir das (als null-ahnung-von Python-habender) Laie so anschaue, fält mir auf:
def usage(): print \ """replace_recursive.py --pattern p --insert i [--filename regex] [--no-regex] dirs
Example: replace_recursive --pattern '(xml)' --text '\1\1'
--This will replace all "xml" with "xmlxml"
In meinen Augen passen usage() und Example nicht zusammen.
Mit freundlichen Grüßen
Jens Puruckherr
On Fri, Apr 30, 2004 at 07:41:33AM +0200, Jens Puruckherr wrote:
lug-dd@schlittermann.de schreibt:
Vielleicht hilft dir dieses Script:
http://www.thomas-guettler.de/scripts/replace-recursive.py.txt
Wenn ich mir das (als null-ahnung-von Python-habender) Laie so anschaue, fält mir auf:
...
Danke für den Hinweis. Das Beispiel war falsch. Es muss --insert lauten.
Gruß, Thomas
lug-dd@mailman.schlittermann.de