find -exec sed Umleitung in Datei

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
rtx05
Beiträge: 9
Registriert: 21.06.2005 15:41:45

find -exec sed Umleitung in Datei

Beitrag von rtx05 » 30.05.2006 12:00:06

Hallo,

ich habe eine Frage zu

Code: Alles auswählen

find ./ -name '*Reader*.xml' -exec   sed -e   's/errorAction=\"MOVE_FILE\"/errorAction=\"DELETE_FILE\"/g' {} \;
Funktioniert einwandfrei, hier wird ja die Ersetzung auf die Std.Ausgabe geprinted.

Aber wie leite ich das ganze in die Orginaldatei um?

{} >{} funktioniert nicht!

Muss die Umleitung außerhalb des exec-Blocks also nach \; passieren.
Ist dort {} noch bekannt? (in meinen Tests nicht)

Funktioniert dies überhaupt mit find, oder nur mit:

Code: Alles auswählen

for file in `find ...` do
   sed -e '...' $file > $file
done
Gruß
rtx05

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 30.05.2006 12:10:37

Code: Alles auswählen

sed -i 's/orig/replacement/' file
die option "-i" ist die "inplace" Ersetzung. AFAICT ist "-i" nur mit sed möglich welcher die GNU Extension hat d.h. z.B. DebianGNU/* sed ist dazu in der Lage. Auf anderen Unices z.B. Solaris geht das nicht IIRC.

markus

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 30.05.2006 13:43:20

Ab welchem sed geht das mit -i eigentlich? Meiner kann das naemlich noch nicht.

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 30.05.2006 14:06:48

hallo nepos,

für langes suchen war ich zu faul aber

Code: Alles auswählen

markus@pc1:~$ apt-show-versions | grep sed
sed/etch uptodate 4.1.5-1
markus@pc1:~$
wie du siehst ist sed im aktuellen Testing uptodate und dazu ("-i") in der Lage.

markus

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 30.05.2006 14:40:53

Danke dir und sorry fuers hijacken des Threads :)

rtx05
Beiträge: 9
Registriert: 21.06.2005 15:41:45

Beitrag von rtx05 » 30.05.2006 15:57:57

Hallo Markus,

danke für den Hinweis.

Gruß

rtx05

Antworten