sed / Variable in mehreren Dateien ersetzen

S

stuxevara

Grünschnabel
Hallo,

muss mal wieder eine Anfängerfrage stellen.

Ich lese mit read eine Variable aus.

Code:
echo " bitte den aktuellen Termin eingeben:"
read VARIABLE

In bestimmten Dateien möchte ich mittels sed überall wo TERMIN steht, die ausgelesene Variable einfügen.

Wie mache ich das?

Meine bisherigen Versuche
Code:
sed 's/TERMIN/`echo $VARIABLE`/g' a.tmp > a.sql
Code:
sed 's/TERMIN/$VARIABLE/g' a.tmp > a.sql
?(

Eine weitere Frage möchte ich auch noch stellen:

Ich möchte diese Substitution nicht nur in a sondern auch in b,c,d und e machen. Gibt´s eine Möglichkeit, gleich eine ganze Liste von Dateien abzuarbeiten
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

Also für die Dateien habe ich eine Lösung gefunden. Ich habe eine Datei in der die Dateien stehen. Diese arbeite ich mit einer for-Schleife ab

Code:
for i in `cat liste.txt`
do
        if [ ! -f $i ]
        then
                echo "Datei $i existiert nicht"
        else
                echo "Datei $i existiert und wird ersetzt"
                [I]GESUCHTER SED-BEFEHL[/I]

fi
done

Jetzt suche ich nur noch nach eine Lösung für sed :hilfe2:
 
Zuletzt bearbeitet:
Damti 'sed' Variablen auflöst muss du das Statement einfach in doppelte Hochkommas setzen:
Code:
sed "s/TERMIN/$VARIABLE/g" a.tmp > a.sql
Das sollte dann klappen...
Gruss
d22
 
doch so einfach ... vielen Dank!
Ich glaub so schnell wäre ich da nicht draufgekommen!

Vielen Dank und ein schönes Wochenende
 
Ahh!
Damti [sic!] 'sed' Variablen auflöst muss du das Statement einfach in doppelte Hochkommas setzen:
Ja eben nicht! Damit bash die Variable auflöst muss das in double-quotes.
Die Variable wird ja in der bash und nicht in sed gesetzt, dann muss auch bash und nicht sed sie wieder "auflösen" (oder "expandieren"). Wollte man sed das Variablenauflösen überlassen wären single-quotes genau das Richtige...

Ich denke mal, dass du das wusstest dizzgo, aber du hast es recht missverständlich ausgedrückt..
Bei sed weiß ich das btw gar nicht, aber awk und perl zB benutzen ja auch das Dollarzeichen als Variablenindikator, da muss man dann, wenn man in awk oder perl Variablen benutzen will, seitens der bash single-quotes benutzen oder das dollerzeichen escapen, damit die bash die Variablen "in Ruhe" lässt...
Sollte natürlich auch auf sh und ksh etc. anwendbar sein..

*Senf dazugeb*
 
und statt 'cat liste.txt' kannste auch $(ls *.sql) nehmen, wildcard natürlich anpassen. Dann dürfen in den Dateinamen aber keine Leerzeichen vorkommen.
Tschöö,
yai
 

Ähnliche Themen

Wie komme ich an den Inhalt des Inhalts einer Variable?

[Gelöst] Suchen und ersetzen mit Hilfe mehrerer Parameter

Wertebereich ersetzen mit sed

Sed: Bestimmtes Feld einer "Zeile mit mehreren Feldern" ergänzen

mittels if abfrage datei nach variabelnwert durchsuchen

Zurück
Oben