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

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Shell: Zeile in Datei finden und durch andere Zeile ersetzen ? Zweiter Versuch

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





BeitragVerfasst am: 09. Apr 2002 12:54   Titel: Shell: Zeile in Datei finden und durch andere Zeile ersetzen ? Zweiter Versuch

hi ..
wie kann ich eine ganz bestimmte Zeile in einer Datei finden, und sie dann komplett durch eine andere zeile ersetzen ?

ich brauche dies, da ich in ca. 500 Configfiles nach einer Zeile suchen muß, um sie zu korrigieren.

die Zeile schaut folgendermaßen aus
PRGBATCH = "TRANS/log_`date`" | $PRG";

und soll abgeändert werden in

PRGBATCH = "$TRANS/log/log_`date '+%h%y'`" | $PRG";

diese Zeile gibt es definitiv nur EIN MAL
ich hätte auch kein Problem, wenn diese Dateien dann als neue dateien erzeugt werden ...


danke
 

Descartes
Gast





BeitragVerfasst am: 09. Apr 2002 15:58   Titel: Zeile in Datei finden und durch andere Zeile ersetzen

probier's mal mit Perl

der Parameter -i.bak legt für jede geänderte Datei ein Backup (*.bak Datei) an

code:

perl -np -i.bak -e 's#PRGBATCH = "TRANS/log_`date` \| \$PRG";#PRGBATCH = "\$TRANS/log/log_`date +\"%h%y\"` \| \$PRG";#' *.conf

kombiniert mit find:

find . -type f -name "*.conf" | xargs perl -np -i.bak -e 's#PRGBATCH = "TRANS/log_`date` \| \$PRG";#PRGBATCH = "\$TRANS/log/log_`date +\"%h%y\"` \| \$PRG";#'

 

Descartes
Gast





BeitragVerfasst am: 09. Apr 2002 16:03   Titel: Nachtrag (weil halt nur ein \[code\] Abschnitt geht)

Den Parameter -i brauchst du auf jeden Fall auch wenn du die Backup-Dateien nicht haben möchtest

Für den Fall dass du direkt ohne ein Sicherungsdatei (*.bak) direkt die Dateien ändern möchtest dann muss du den Parameter -i ohne das ".bak" verwenden:

code:

perl -np -i -e 's#PRGBATCH = "TRANS/log_`date` \| \$PRG";#PRGBATCH = "\$TRANS/log/log_`date +\"%h%y\"` \| \$PRG";#' *.conf

kombiniert mit find:

find . -type f -name "*.conf" | xargs perl -np -i -e 's#PRGBATCH = "TRANS/log_`date` \| \$PRG";#PRGBATCH = "\$TRANS/log/log_`date +\"%h%y\"` \| \$PRG";#'


 

Hey
Gast





BeitragVerfasst am: 09. Apr 2002 20:06   Titel: Re: Shell: Zeile in Datei finden und durch andere Zeile ersetzen ?

Nicht auf der Shell, aber auch nützlich für diesen Zweck:

http://kfilereplace.sourceforge.net/
 

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