AW: [Vienna-pm] regex beim scriptaufruf als argument uebergeben

Baier Oliver Oliver.Baier at lotterien.at
Mon Feb 28 10:03:58 PST 2005


> -----Ursprüngliche Nachricht-----
> Von: LAUN Wolfgang [mailto:wolfgang.laun at alcatel.at]
> Gesendet: Montag, 28. Februar 2005 17:13
> An: Baier Oliver
> Betreff: RE: [Vienna-pm] regex beim scriptaufruf als argument 
> uebergeben
> 
> ...
> Ich habe mit einem Parameter der
> Form  'xyz\n' (oder so ähnlich) so oder so keine Probleme
> und sogar "xyz\n" funktioniert...
> 
> Bitte um ausführlichere Angaben: Wie sehen die linke
> und die rechte Seite von =~ aus und welche Patterns
> (als Command line argument) matchen welchen Input nicht?

In meiner Verwunderung bei Entdecken meines Problems hab ich mich
einfach zu schlecht ausgedrueckt; also nochmal besser:

Mein Script soll bestimmte Dateien bearbeiten und es kann durchaus
moeglich sein, dass in mehreren Textfiles geschrieben wurde

	# irgendwas davor
	# eine Zeile! eine andere Zeile
	# irgendwas danach

und ich es korrigieren will in

	# irgendwas davor
	# eine Zeile!
	# eine andere Zeile
	# irgendwas danach

Da der zu bearbeitende Text logischerweise nicht immer gleich
falsch ist, will ich die Ersetzung als regex mitgeben. Usage
ist Scriptaufruf <alte regex> <neuer string>; in diesem Fall:

	$ ./replace.pl '! eine' '!\n eine'

Dass es in Wirklichkeit noch andere Parameter, wie Maindir, File-regex
&co gibt, ist hier unwichtig.

Im Prog sieht das ganze ungefaehr so aus:

	my ($old,$new) = @ARGV;
	...
	...
	while (<FILE>) {
		if (s#$old#$new#g) {
			...
			...

Auf meinem Testsystem jedenfalls (GNU bash, version 2.05.0(1)-release
unter sparc-sun-solaris2.9) sieht das file dann so aus

	# irgendwas davor
	# eine Zeile!\n eine andere Zeile
	# irgendwas danach

Im Seach-Teil kann ich "\n" allerdings schon matchen, nur im replace-Teil
macht er aus mir unbekannten Gruenden ein /\\n/ draus.

lg
Oliver
=====================================================

Die übermittelten Informationen sind nur für die Organisation/Person bestimmt, an die sie adressiert sind und können persönliches, vertrauliches oder rechtlich geschütztes Material enthalten. Andere Personen als der beabsichtigte Empfänger dieser E-Mail sind nicht dazu befugt, diese Informationen abzurufen, weiterzuleiten, zu reproduzieren oder auf sonstige andere Weise zu verwenden. Für den Fall, dass Sie diese Nachricht irrtümlicherweise erhalten haben, wenden Sie sich bitte an den Absender und löschen Sie diese.

HINWEIS:

E-Mail-Verkehr ist nicht sicher und es kann nicht garantiert werden, dass Informationen vollständig, unverfälscht, etc. beim Empfänger ankommen.

=====================================================

The transmitted information is only meant for the addressed organization/person and may contain personal, confidential or legally protected material. Other persons than the intended addressee are not allowed to retrieve, forward, reproduce or use this information in any manner. If you received this message by mistake, please consult the sender and erase it.

NOTICE:

E-Mail-traffic may not be safe and it can not be assured that the received information is complete, accurate, etc.



More information about the Vienna-pm mailing list