Inhalt einer Variable durch Teilinhalt einer anderen Variable ersetzen / Teil löschen
var1="a b c" var2="a d e f" var3="$var1"" ""$var1" var4 wird per Bash-Skript aus var3 erstellt und ergibt zB "a b c d e f" Wie entferne ich aus var4 den Inhalt von var1, sodass sich "d e f" ergibt? Das Problem ist, dass Variablen verwendet werden müssen und nicht feste Zeichenketten. Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Don, 10 Sep 2009, Al Bogner schrieb:
var1="a b c" var2="a d e f" var3="$var1"" ""$var1" var4 wird per Bash-Skript aus var3 erstellt und ergibt zB "a b c d e f"
Wie entferne ich aus var4 den Inhalt von var1, sodass sich "d e f" ergibt?
Das Problem ist, dass Variablen verwendet werden müssen und nicht feste Zeichenketten.
$ var1="a b c"; var4="a b c d e f"; echo "${var4//$var1/}" d e f (um das Leerzeichen mußt du dich selber kümmern). Alternativ: echo "$var4" | sed "s/$var1//" HTH, -dnh -- "Does anyone else sense the deep irony in a 'Family size' pack of condoms?" -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Donnerstag 10 September 2009 21:55:43 schrieb David Haller:
Hallo,
Am Don, 10 Sep 2009, Al Bogner schrieb:
var1="a b c" var2="a d e f" var3="$var1"" ""$var1" var4 wird per Bash-Skript aus var3 erstellt und ergibt zB "a b c d e f"
Wie entferne ich aus var4 den Inhalt von var1, sodass sich "d e f" ergibt?
Das Problem ist, dass Variablen verwendet werden müssen und nicht feste Zeichenketten.
$ var1="a b c"; var4="a b c d e f"; echo "${var4//$var1/}" d e f
(um das Leerzeichen mußt du dich selber kümmern).
Alternativ:
echo "$var4" | sed "s/$var1//"
Hat das bei mir nicht funktioniert, weil ich | sed "s/'$var1'//" verwendet habe? Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Donnerstag 10 September 2009 22:11:54 schrieb Al Bogner:
Am Donnerstag 10 September 2009 21:55:43 schrieb David Haller:
Alternativ:
echo "$var4" | sed "s/$var1//"
Hat das bei mir nicht funktioniert, weil ich | sed "s/'$var1'//" verwendet habe? die einfachen Anführungzeichen ' vermeiden das expandieren der Variable, das heißt, du hast $var1 entfernt, nicht den Inhalt von $var1
Gruß Felix
Am Donnerstag 10 September 2009 22:19:22 schrieb Felix Lemke:
Am Donnerstag 10 September 2009 22:11:54 schrieb Al Bogner:
Am Donnerstag 10 September 2009 21:55:43 schrieb David Haller:
Alternativ:
echo "$var4" | sed "s/$var1//"
Hat das bei mir nicht funktioniert, weil ich | sed "s/'$var1'//" verwendet habe?
die einfachen Anführungzeichen ' vermeiden das expandieren der Variable, das heißt, du hast $var1 entfernt, nicht den Inhalt von $var1
Habe mich falsch zitiert, es war genau umgekehrt: sed 's/"$var1"//' Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Don, 10 Sep 2009, Al Bogner schrieb:
Am Donnerstag 10 September 2009 22:19:22 schrieb Felix Lemke:
Am Donnerstag 10 September 2009 22:11:54 schrieb Al Bogner:
Am Donnerstag 10 September 2009 21:55:43 schrieb David Haller:
Alternativ:
echo "$var4" | sed "s/$var1//"
Hat das bei mir nicht funktioniert, weil ich | sed "s/'$var1'//" verwendet habe?
die einfachen Anführungzeichen ' vermeiden das expandieren der Variable, das heißt, du hast $var1 entfernt, nicht den Inhalt von $var1
Habe mich falsch zitiert, es war genau umgekehrt:
sed 's/"$var1"//'
Du "beendest" nicht die '', d.h. für die shell steht $var1 immer noch in den '' (die "" interessieren da nicht, die sieht aber sed, das sucht dann also nach '"', dem string '$var1' und '"'!). Richtig wäre: sed 's/'"$var1"'//' Aber da außer dem s/// eh nix vorkommt nimm gleich meine Version. -dnh -- Hunde haben ein Herrchen oder Frauchen - Katzen ihr Personal -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Thu, 10 Sep 2009, 21:04:30 +0200, Al Bogner wrote:
var1="a b c" var2="a d e f" var3="$var1"" ""$var1" var4 wird per Bash-Skript aus var3 erstellt und ergibt zB "a b c d e f"
Wie entferne ich aus var4 den Inhalt von var1, sodass sich "d e f" ergibt?
Das Problem ist, dass Variablen verwendet werden müssen und nicht feste Zeichenketten.
$ echo `echo "$var4" | sed -e "s,[:space:]*$var1[:space:]*,,g"` Mit dem echo `...` beseitigst du eventuelle Leerzeichen am Anfang oder Ende, die du ja nicht haben wolltest.
Al
HTH, cheers. l8er manfred -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Don, 10 Sep 2009, Manfred Hollstein schrieb:
On Thu, 10 Sep 2009, 21:04:30 +0200, Al Bogner wrote:
var1="a b c" var2="a d e f" var3="$var1"" ""$var1" var4 wird per Bash-Skript aus var3 erstellt und ergibt zB "a b c d e f"
Wie entferne ich aus var4 den Inhalt von var1, sodass sich "d e f" ergibt?
Das Problem ist, dass Variablen verwendet werden müssen und nicht feste Zeichenketten.
$ echo `echo "$var4" | sed -e "s,[:space:]*$var1[:space:]*,,g"` ^^^^^^^^^ Da fehlen nochmal [] Mit dem echo `...` beseitigst du eventuelle Leerzeichen am Anfang oder Ende, die du ja nicht haben wolltest.
Das sollte man auch besser im sed erledigen. echo "$var4" | sed -e "s/[[:space:]]*${var1}[[:space:]]*,,g; s/^[[:space:]]*//;s/[[:space:]]*$//" HTH, -dnh -- <[TN]FBMachine> i got kicked out of barnes and noble once for moving all the bibles into the fiction section -- http://www.bash.org/?406373 -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (4)
-
Al Bogner
-
David Haller
-
Felix Lemke
-
Manfred Hollstein