Ich habe "Ich liebe Suzi und Marry" und möchte "Suzi" in "Sara" ändern.
firstString="Ich liebe Suzi und Marry"
secondString="Sara"
Gewünschtes Ergebnis:
firstString="Ich liebe Sara und Marry"
Ich habe "Ich liebe Suzi und Marry" und möchte "Suzi" in "Sara" ändern.
firstString="Ich liebe Suzi und Marry"
secondString="Sara"
Gewünschtes Ergebnis:
firstString="Ich liebe Sara und Marry"
Muster, um das erste Auftreten mit speziellen Zeichen zu ersetzen:
${parameter/muster/zeichenfolge}
Muster, um alle Vorkommen mit speziellen Zeichen zu ersetzen:
${parameter//muster/zeichenfolge}
ersteZeichenkette="Ich liebe //Suzi// und Marry"
zweiteZeichenkette="Sara"
ersteZeichenkette="${ersteZeichenkette/\/\/Suzi\/\//"$zweiteZeichenkette"}"
echo $ersteZeichenkette
Es wird drucken: Ich liebe Sara und Marry
Auf der oben vorgeschlagenen awk-Lösung basierend, würde ich sie erweitern, um awk-Variablen zu verwenden. Dies ermöglicht das Übergeben von Text mit Sonderzeichen..
aString="Ich liebe _p1_ sehr!"
aVar="komplizierte \" Text \' mit \. speziellen ) Zeichen"
awk -v p1="$aVar" '{gsub("_p1_",p1); print}' <<< $aString
ergibt:
Ich liebe komplizierte " Text ' mit . speziellen ) Zeichen sehr
es wäre schwierig, diesen Fall mit sed -e
oder bash
-Substitutionen zu implementieren.
Der einzige Weg, den ich gefunden habe, ist den String in einer Datei zu speichern, sed zu verwenden und dann den Dateiinhalt in einer Variable zu speichern:
echo "Ich liebe Suzy" > tmp.txt
sed -i "s/Suzy/Sarah/" tmp.txt
set res=`cat tmp.txt`
echo $res
rm tmp.txt
Ich weiß nicht, welche Art von Shell ich verwende (die einzige Sache, die ich gefunden habe, ist sh-4.2, wenn ich 'sh' eingebe), aber alle klassischen Syntaxe scheitern, wie das einfache test=${test2}
. Es scheitert 2 Mal: bei der Zuweisung (muss set
verwenden) und bei dem ${}
.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.