Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
autom. Dateibearbeitung mit SED

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Sonstiges
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
thorsten



Anmeldungsdatum: 23.01.2002
Beiträge: 72

BeitragVerfasst am: 22. Jan 2003 12:03   Titel: autom. Dateibearbeitung mit SED

Hallo,
ich habe ein Problem mit der Dateibearbeitung per sed.
Ich möchte in einem Verzeichnis mit Unterverzeichnissen alle Dateien heraussfinden, die "SUCHWORT" enthalten.
Diese sollen dann mittels sed bearbeitet werden in der Form, dass "SUCHWORT" gegen "ERSETZUNG" ausgetauscht wird.

Um die Dateien zu finden nehme ich mir grep zu Hilfe:

grep -r -l "SUCHWORT" dir/* 2> /dev/null


Der grep Befehl liefert die Dateinamen mit realivem Unterverzeichnis, falls die Datei in einem SubDir lag.

sed soll nun den Austausch vornehmen:

sed -e 's/SUCHWORT/ERSETZUNG/g' DATEI > DATEI


Setzte ich an Stelle des ">" ein ">>" ein, fügt sed die Bearbeiteten Textzeilen korrekt an das Ende der Datei.
Gebe ich einen anderen Dateinamen als Ziel an, wird diese Datei richtig erzeugt mit korrektem Inhalt.

Das ganze habe ich in einem Script versucht zu automatisieren:

#!/bin/sh

for i in `grep -r -l "SUCHWORT" dir/* 2> /dev/null`; do
test -r $i || continue
sed -e 's/SUCHWORT/ERSETZUNG/g' $i > $i
done


nur leider sind alle Dateien, die SUCHWORT enthalten, nach Ausführung des Sriptes leer.

Hat jemand eine Idee, oder evt. auch einen anderen Lösungsvorschlag für mein Problem?

Vielen Dank

Thorsten

PS: Angemeldet am System als root, habe also auch die nötigen Rechte...


Zuletzt bearbeitet von thorsten am 22. Jan 2003 12:03, insgesamt 1-mal bearbeitet
 
Benutzer-Profile anzeigen Private Nachricht senden

Chris
Gast





BeitragVerfasst am: 22. Jan 2003 13:42   Titel: Re: autom. Dateibearbeitung mit SED

Hi!

Durch das Umleiten des sed-Befehls wird die Zieldatei erstellt bevor die Quelldatei eingelesen wird. Da es sich hierbei allerdings um ein und dieselbe Datei handelt wird die Datei vorher gelöscht da du > und nicht >> verwendet hast. Versuch mal den folgenden Code. Der erstellt zuerst eine Sicherheitskopie und nutzt diese dann als Quelldatei für das sed-Kommando.

Gruß
Chris

code:

#!/bin/sh
for i in `grep -r -l "SUCHWORT" dir/* 2> /dev/null`; do
test -r $i || continue
cp $i $i.bak
sed -e 's/SUCHWORT/ERSETZUNG/g' $i.bak > $i
done

 

thorsten



Anmeldungsdatum: 23.01.2002
Beiträge: 72

BeitragVerfasst am: 22. Jan 2003 14:28   Titel: Re: autom. Dateibearbeitung mit SED

Vielen Dank, das hat mit einer weiteren Änderung dann funktioniert.
Habe noch eine Zeile eingefügt das die -bak wieder gelöscht wird.
code:

#!/bin/sh

for i in `grep -r -l "ueber18" dir/* 2> /dev/null`; do
test -r $i || continue
cp $i $i.bak
sed -e 's/ueber18/eroproof/g' $i.bak > $i
rm $i.bak
done

 
Benutzer-Profile anzeigen Private Nachricht senden

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Sonstiges Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy