Strings ersetzen in Dateien mittels shell-script?
Hallo miteinander!
Ich muß in einer Datei nach verschiedenen Strings suchen zB.:
"/home/useX/bla/irgendwas" und möchte nun den Teil /usrX/ durch /usrY/
ersetzen. Dazu würde ich mir dann ein Script schreiben, das ich in etwa
folgendermaßen aufrufen möchte:
mein_script
Am Donnerstag, 18. August 2005 10:15 schrieb Anatol:
Hallo miteinander!
Ich muß in einer Datei nach verschiedenen Strings suchen zB.: "/home/useX/bla/irgendwas" und möchte nun den Teil /usrX/ durch /usrY/ ersetzen. Dazu würde ich mir dann ein Script schreiben, das ich in etwa folgendermaßen aufrufen möchte:
mein_script
Wie kann ich sowas angehen? Es gibt bestimmt ein schickes Kommando, das mir dabei helfen kann, aber welches? Ich vermute mal, es ist eine halbwegs triviale Sache und total unspannend, aber ich würde mich trotzdem tierisch freuen, von Euch hierbei Hilfestellung zu bekommen.
siehe man sed z.B. sed -e's|/usrX/|/usrY/|g' < eingabe-datei > ausgabe-datei Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 9204871 Fax: +49(721) 24874 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
Dr. Jürgen Vollmer schrieb:
[...]
siehe man sed
z.B. sed -e's|/usrX/|/usrY/|g' < eingabe-datei > ausgabe-datei
Frage: Kann man eigentlich in diesem Script-Bereich mit den Shellvariablen arbeiten? Also zB so: sed -e's|$SEARCH|$REPLACE|g' < eingabe-datei > ausgabe-datei So ganz einfach scheint dies nicht zu sein, denn bei mir funktioniert es einfach nicht ;( Hat dazu jemand eine Idee?? Viele Grüße Anatol
Anatol schrieb:
Dr. Jürgen Vollmer schrieb:
[...]
siehe man sed z.B. sed -e's|/usrX/|/usrY/|g' < eingabe-datei > ausgabe-datei
Frage: Kann man eigentlich in diesem Script-Bereich mit den Shellvariablen arbeiten? Also zB so:
sed -e's|$SEARCH|$REPLACE|g' < eingabe-datei > ausgabe-datei
So ganz einfach scheint dies nicht zu sein, denn bei mir funktioniert es einfach nicht ;(
Hat dazu jemand eine Idee??
Viele Grüße Anatol
Ich würde es so machen cat eingabedatei | sed -e "1,$ s/alterstring/neuerstring/g" > ausgabedatei Christian
Hallo Christian, ich:
sed -e's|/usrX/|/usrY/|g' < eingabe-datei > ausgabe-datei
Anatol
Frage: Kann man eigentlich in diesem Script-Bereich mit den Shellvariablen arbeiten? Also zB so:
sed -e's|$SEARCH|$REPLACE|g' < eingabe-datei > ausgabe-datei
Christian Leicht:
Ich würde es so machen
cat eingabedatei | sed -e "1,$ s/alterstring/neuerstring/g" > ausgabedatei
warum denn so komplizioert? Was soll es bringen, hier noch die Adresse (1,$) anzugeben, ist doch der Default. "cat" ist auch überflüssig. Das Problem von Anatol (Variablen im Muster) wird dadurch auch nicht gelöst- Übersehe ich was??? Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 871 Fax: +49(721) 92 04 872 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
Am Donnerstag, 18. August 2005 16:14 schrieb Anatol:
Dr. Jürgen Vollmer schrieb:
[...]
siehe man sed
z.B. sed -e's|/usrX/|/usrY/|g' < eingabe-datei > ausgabe-datei
Frage: Kann man eigentlich in diesem Script-Bereich mit den Shellvariablen arbeiten? Also zB so:
sed -e's|$SEARCH|$REPLACE|g' < eingabe-datei > ausgabe-datei
So ganz einfach scheint dies nicht zu sein, denn bei mir funktioniert es einfach nicht ;(
Hat dazu jemand eine Idee??
klar geht das so nicht, denn innerhalb eines String '....' expandiert die Shell keine Variablen. Deshalb: sed -e"s|$SEARCH|$REPLACE|g" < eingabe-datei > ausgabe-datei also der String ist mit "..." eingeschlossen. Aber Achtung: Wenn $SEARCH oder $REPLACE ein | oder " enthält geht's schief. Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 871 Fax: +49(721) 92 04 872 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
Hallo Anatol
-----Ursprüngliche Nachricht----- Von: Anatol [mailto:linux@recordcaster.de] Gesendet: Donnerstag, 18. August 2005 10:16 An: suse-linux@suse.com Betreff: Strings ersetzen in Dateien mittels shell-script?
Hallo miteinander!
Ich muß in einer Datei nach verschiedenen Strings suchen zB.: "/home/useX/bla/irgendwas" und möchte nun den Teil /usrX/ durch /usrY/ ersetzen. Dazu würde ich mir dann ein Script schreiben, das ich in etwa folgendermaßen aufrufen möchte:
mein_script
Wie kann ich sowas angehen? Es gibt bestimmt ein schickes Kommando, das mir dabei helfen kann, aber welches? Ich vermute mal, es ist eine halbwegs triviale Sache und total unspannend, aber ich würde mich trotzdem tierisch freuen, von Euch hierbei Hilfestellung zu bekommen.
Viele Grüße Anatol
Eine gute Möglichkeit bietet hier sed. Grüße Maximilian Steinbauer
Hallo, Am Thu, 18 Aug 2005, Anatol schrieb:
Ich muß in einer Datei nach verschiedenen Strings suchen zB.: "/home/useX/bla/irgendwas" und möchte nun den Teil /usrX/ durch /usrY/ ersetzen. Dazu würde ich mir dann ein Script schreiben, das ich in etwa folgendermaßen aufrufen möchte:
mein_script
Mit nem aktuellen GNU-sed: sed -i -e 's/such_string/ersetze_string/g' datei_name Oder mit perl: perl -pi -e 's/such_string/ersetze_string/g' datei_name Die Trennzeichen beim 's///' darfst du in beiden Faellen beliebig waehlen, es darf aber nicht in den beiden strings vorkommen. -dnh --
Ich habe folgende Frage: Wie lautet der Imperativ von "erschrecken"? "Buh!" -- S. Doerner und R. Radermacher in desd
participants (5)
-
Anatol
-
Christian Leicht
-
David Haller
-
Dr. Jürgen Vollmer
-
Maximilian Steinbauer