2016-07-26 10 views
0

Ich versuche sed zu verwenden, um den Ausdruck 'root'@'localhost' durch 'root'@'%' ohne Erfolg zu ersetzen. Könnte mir bitte jemand mit dem Befehl helfen?sed Befehl zum Ersetzen von 'root' @ 'localhost' durch 'root' @ '%'

Ich habe versucht, die folgenden:

sed -i ’s#\’root\’@\’localhost\’#\’root\’@\’%\’#g’ xyz.sql 
sed: -e expression #1, char 1: unknown command: `?' 

sed -i -e ’s/localhost/%/g’ xyz_2616.sql 
sed: -e expression #1, char 1: unknown command: `?' 
+0

Don‘ Benutze 'sed -i' beim Testen! – Kusalananda

+0

'sed" s/'root' @ 'localhost'/'root' @ '%'/g "' – DaBler

+0

Danke DaBler. Es funktionierte. – beginnercoder

Antwort

0

Erstens, stellen Sie sicher, dass Sie einen Apostroph verwenden. (a.k.a. ’ oder Unicode 8217) ist nicht dasselbe wie ASCII-Zeichen 39, '.

Als Nächstes können Sie keine einfachen Anführungszeichen in einfache Anführungszeichen setzen. Here's an answer Ich habe vor einiger Zeit darüber geschrieben.

Sie können jedoch einfache Anführungszeichen in doppelte Anführungszeichen setzen oder sie außerhalb der Zeichenfolge in Anführungszeichen setzen. Zum Beispiel könnte eine der folgenden arbeiten:

sed -e "s/'root'@'localhost'/'root'@'%'/g" file.sql 

oder

sed -e 's/'\''root'\''@'\''localhost'\''/'\''root'\''@'%'\''/g' file.sql 

Alternativ Sie nur den Teil ersetzen könnten Sie daran interessiert sind, zu vertrauen, dass es nicht an anderer Stelle erscheint auf dem gleichen Leitung:

sed -e '/[email protected]/s/localhost/%/' file.sql 
0

Der Charakter wie ein Apostroph sieht nicht (') zu mir. Stellen Sie sicher, dass Sie einfache Anführungszeichen verwenden.

Der Charakter, den Sie tatsächlich eingeben, ist ein "right single quote mark". Was wir als "einfaches Zitat" bezeichnen, ist eigentlich ein "apostrophe".

Folgendes sollte funktionieren:

sed -e 's/localhost/%/g' rice_2616.sql 

oder Ihre erste Alternativen, aber mit doppelten Anführungszeichen, um zu vermeiden, die die eingebetteten einfachen Anführungszeichen zu entkommen (was ich vermute, Apostrophe sind):

sed -e "s/'root'@'localhost'/'root’@'%'/g" rice_2616.sql 
Verwandte Themen