&
im Ersetzungstext ist das Besondere: es bedeutet , „den ganzen Teil der Eingabe , die durch das Muster abgestimmt wurde“, so , was Sie hier tun , ersetzt user=&uidX
mit user=user=&uidXsysuserid.
. Verwenden Sie, um ein kaufmännisches Und in den Ersetzungstext einzufügen \&
.
Eine andere Sache, die falsch aussieht, ist, dass .
das Suchmuster für ein beliebiges Zeichen steht (außer für eine neue Zeile), aber das .
am Ende des Ersetzungstextes ist ein wörtlicher Punkt. Wenn Sie nur die Literalzeichenfolge ersetzen möchten user=&uid.
, schützen Sie die .
mit einem Backslash.
sed -e 's/user=&uid\./user=\&sysuserid./g'
Wenn Sie ein beliebiges Zeichen ersetzen und es im Ergebnis beibehalten möchten, fügen Sie das Zeichen in eine Gruppe ein und verwenden Sie \1
in der Ersetzung, um auf diese Gruppe zu verweisen.
sed -e 's/user=&uid\(.\)/user=\&sysuserid\1/g'
In Anbetracht der Wiederholung zwischen dem Originaltext und der Ersetzung sollten Sie trotzdem Gruppen verwenden:
sed -e 's/\(user=&\)u\(id\.\)/\1sysuser\2/g'
dh "ersetzen u
durch sysuser
zwischen user=&
und id.
".
&
ist ein Sonderzeichen , so dass es entgangen , wenn sie in der RHS verwendet werden muss - in Ihrem Fall müssen Sie laufen ,'s/user=&uid./user=\&sysuserid./g'
obwohl ich Sie auch brauchen , um die Flucht der Punkt in der LHS vermuten eine wörtliche Punkt zu entsprechen , so dass Sie wirklich brauchen's/user=&uid\./user=\&sysuserid./g'