2016-10-03 2 views
-4

austauschen möchte ich mit einem variablen Wert unter Verwendung von Shell-Skript eine Zeichenfolge in Linux-Datei ersetzen: versucht dies zu tun in Shell-Skript, aber nicht funktioniert.einen Wert in einer Datei mit Shell Scripting

sed -i "s/$StrVal1/$StrVal2/" "$TargetFile"

Bitte helfen.

+0

Seien Sie präziser. Was der Ausgang zu erwarten war, welche Fehlermeldung hast du, ... –

+0

Wenn ein Zeichenfolge Schrägstriche enthält, zum Beispiel, würden Probleme vollständig zu erwarten - aber die Frage muss genügend Informationen zu wissen, enthält, wenn das der Fall ist; so wie es ist, enthält es einfach zu wenig Details, um verantwortlich zu sein. Siehe http://stackoverflow.com/help/mcve –

+0

... eine bessere Formulierung dieser Frage der tatsächliche Dateiinhalt (oder, falls diese Inhalte sind vertraulich, andere Inhalte, die Frage zu sein, ausreichend getestet zu reproduzieren), die bearbeitet würde und spezifische "StrVal1" - und "StrVal2" -Werte, die ebenfalls getestet wurden, um das Problem zu reproduzieren. Und anstatt "nicht zu arbeiten", würde es genau beschreiben, wie ** es nicht funktioniert hat: Mit einer Fehlermeldung? Ein erfolgreicher Status, aber keine Änderungen an der Datei? Etwas anderes? –

Antwort

0

Ich glaube, Sie vergessen, das "g" in den sed Befehl. Funktioniert für mich auf meiner Linux-Shell. Sie können die Datei auch cattern und dann den Befehl sed ausführen.

Zuerst definiere ich Variablen, wie unten dargestellt, an der Eingabeaufforderung:

a='class'; b='CLASS' 

Dann Katze ich die Datei mit einem sed-Befehl:

cat a.txt | sed "s/$a/$b/g" 

Also meine Eingabedatei ist wie

class="pending">Count 
    class="completed">Count 

mit diesem Befehl Meine Ausgabe ist wie

CLASS="pending">Count: 
    CLASS="completed">Count: