SED: Zu bearbeitende Dateien aus Textfile einlesen

  • Ersteller bernd.stromberg
  • Erstellt am
B

bernd.stromberg

Grünschnabel
Tag zusammen,

entweder ich suche nach den falschen Stichworten, oder ich mache was falsch. Mein Problem :

Mit dem Befehl

Code:
grep -Rsl 'ZuSuchenderText' > Textfile.txt

habe ich mir eine Datei mit zu behandelnden Files erstellen lassen. OK. Jetzt moechte ich, dass sed jede Zeile aus Textfile.txt einliest und diese dann behandelt.

In man-Pages, Foren usw finde ich nur, dass -f SCRIPTFILE das Kommando unterbringt. Wie bringe ich ihn nun dazu, mehrere Zeilen auszulesen und auf diese Dateien anzuwenden ?

Bsp. Inhalt Textfile.txt :

/pfad/zur/ersten.datei
/pfad/zur/zweiten.datei
/pfad/zur/dritten.datei

Nun soll das

Code:
sed s/suche/ersetze/ [Jede Zeile aus Textfile.txt]

als Futter bekommen und suche durch ersetze austauschen, dies dann aber auf ersten.datei bis dritten.datei anwenden. Ohjee, ist das noch frueh heute Morgen. Wisst Ihr, was ich oben meine...?

Gruss

Rainer.
(Alias Bernd :brav:)
 
Morgen,

sed kennt die Option -i

Code:
  -i[Suffix], --in-place[=Suffix]
                 ändert die Eingabedatei (Backup wird erzeugt, falls Suffix
                 angegeben wurde)

Code:
sed -i.bak 's/suche/ersetze/' `grep -Rsl 'ZuSuchenderText'`
sollte eigentlich tun was du willst, ist jetzt aber nicht getestet, also mit vorsicht verwenden.

mfg
HeadCrash
 
Habe den Wald vor lauter Schleifen nicht mehr gesehen :

Ein Script angelegt mit dem Inhalt

PHP:
#!/bin/bash
for x in $(grep -Rsl "ZuSuchenderText" /pfad/zum/geschehen); do
    sed -i s/ZuSuchenderText/ZuErsetzenderText/g $x
done

@HeadCrash

Deins probiere ich jetzt auch aus, Sekunde...

FRAGE :
Wie kann ich hier das als Geloest markieren ?

Gruss

Rainer.
 
@HeadCrash

Vielen Dank fuer die schnelle Antwort. Mein Post darauf ist irgendwie untergegangen heute morgen.

Ergebnis ist jedenfalls, dass ich den Wald vor lauter Schleifen nicht mehr gesehen hatte. Herausgekommen ist eine for-Schleife :

PHP:
#!/bin/bash
for x in $(grep -Rsl "ZuSuchenderText" /pfad/zum/dateiverzeichnis/); do
    sed -i s/'ZuSuchenderText'//g $x
done

Gruss Rainer.
(Alias Bernd)
 
Warum werden meine Antorten hier nicht veroeffentlicht...?!

Heute ist jetzt schon die zweite verschluckt worden.
 
Also jetzt nochmal in Kurzform :

Dieses Script sorgt fuer den gewuenschten Erfolg.

PHP:
#!/bin/bash
for x in $(grep -Rsl "ZuSuchenderText" /pfad/zum/geschehen/); do
    sed -i s/'ZuSuchendenText'//g $x
done

Danke HeadCrash fuer die Muehe.
 

Ähnliche Themen

Zeilen löschen und ersetzen mit sed

Newbie sucht Hilfe: Zahl aus Datei mit grep/cut/sed lesen und schreiben?

Zurück
Oben