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

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
sed/find Problem

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





BeitragVerfasst am: 14. Dez 2002 19:40   Titel: sed/find Problem

Hallo

Ich habe diverse HTML-Dateien in verschiedenen Unterordnern verteilt. Ich möchte nun bei allen Dateien den Ausdruck asdf durch fdsa (bloss ein Beispiel) ersetzen. Dazu habe ich folgendes ausprobiert:

[kurt@earth html]$ find ./ * -exec sed -n -e s/asdf/fdsa/g;
find: missing argument to `-exec'

Was stimmt an meinen Ausdruck nicht bzw. wie kann ich diese Ersetzung realisieren?

Vielen Dank,
Kurt
 

ratte
Gast





BeitragVerfasst am: 15. Dez 2002 15:32   Titel: Re: sed/find Problem

du must das sed argument in anfuehrungszeichen setzen. und p fehlt auch.

ob's dadurch das macht, was du willst, bezweifle ich aber irgendwie :)

$ find ./ * -exec sed -n -e "s/asdf/fdsa/pg"

ratte
 

Kurt
Gast





BeitragVerfasst am: 15. Dez 2002 16:42   Titel: Re: sed/find Problem

Hi Ratte

Danke für deine Antwort, es funktioniert aber leider immernoch nicht:

[kurt@earth html]$ find ./ * -exec sed -n -e "s/asdf/fdsa/pg"
find: missing argument to `-exec'

Und was meinst du mit "ob's dadurch das macht, was du willst, bezweifle ich aber irgendwie Smile"? Verfolge ich einen falschen Lösungsansatz?

Vielen Dank für jede Antwort,
Kurt
 

ratte
Gast





BeitragVerfasst am: 15. Dez 2002 18:17   Titel: Re: sed/find Problem

weshalb dein bisheriger ansatz niemals irgendein file umbenennen wird, liegt zb. daran, dass du den `mv` befehl noch gar nicht eingebaut hast.

find ./ * -print | sed -n -e "s/asdf/fdsa/pg"

gibt nur die sed modifikation auf der konsole aus. und wie soll's jetzt weitergehen?

nun, ich habe dir da was gebastelt:

code:

$ for I in `find ./ -name "*.html" -print` ; do echo $I; mv $I `echo $I | sed -n -e 's/asdf/fdsa/gp'`;done



das sollte _genau_ das machen, was du in deinem ersten posting erfragt hast. files, die von sed nicht gematcht werden erzeugen kein zweites mv argument, weswegen dieser befehl sich dann mit einer fehlermeldung meldet aber nichts macht.
alle files, die sed matchen kann erzeugen ein mv befehl mit zwei argumenten, di. ./pfad/file_orignal und ./pfad/file_neu
du kannst ja mal den mv befehl von echo"" einschliessen, dann wird der befehl nur auf stdout ausgeworfen und es erfolgt keine aktion.

natuerlich solltest du erst damit rumexperimentieren, und zwar _nicht_ an den orignaldateien, sondern an einer kopie:

# cp -avr /mein/verzeichnis /mein/testverzeichnis

ratte
 

Jochen
Gast





BeitragVerfasst am: 15. Dez 2002 18:34   Titel: Re: sed/find Problem

Hi,

wenn ihr mit der Option "-n" und "s///p" arbeitet, werden nur die Zeilen ausgegeben, in denen der Treffer vorkommt. Alle anderen werden unterdrückt...

Meine Lösung für solche Problemfälle ist immer
code:
find . -name "*.html -print0 | xargs -0 perl -p -i.orig -e 's/asdf/fdsa/g'
find schaufelt alle Dateinamen an xargs. Der baut ein perl-Kommando mit den o.a. Optionen und sämtlichen übergebenen Dateinamen zusammen (und beachtet dabei auch die maximal mögliche Anzahl von Argumenten). perl wird durch die Option -p dazu gebracht, wie sed zu funktionieren, nur dass es durch die Option -i ein Inline-Editing macht. Zur Sicherheit werden alle Dateien, die angepackt werden, vorher kopiert mit der zusäzlichen Endung ".orig".

Jochen
 

ratte
Gast





BeitragVerfasst am: 15. Dez 2002 19:03   Titel: Re: sed/find Problem

perl ist ja eigentlich auch meine lieblingssprache fuer schnell_mal_eben_problem_loesen, aber so ein file problem sollte, finde ich, mit bashmitteln alleine geloest werden.
obwohl das ist natuerlich ansichts- oder systemportabiliaets-sache :)

ratte
 

Jochen
Gast





BeitragVerfasst am: 15. Dez 2002 19:11   Titel: Re: sed/find Problem

Witzig - normalerweise bastel ich eher Shellskripte und sehr viel perl beherrsche ich gar nicht. Aber dieses Skriptchen finde ich so praktisch, dass ich es fest in meinen Werkzeugkasten übernommen habe. Auch in der Hoffnung, deswegen mal wieder etwas mehr perl zu lernen...

Jochen
 

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

 
Gehen Sie zu:  

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