2016-07-26 17 views
0

を使用して、式'root'@'localhost''root'@'%'に置き換えようとしています。誰かが命令で私を助けてくれますか?'root' @ 'localhost'を 'root' @ '%'に置き換えるためのsedコマンド

私は次のことを試してみました:

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

ドン」をテスト時に 'sed -i'を使うことはありません! – Kusalananda

+0

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

+0

DaBlerありがとうございます。出来た。 – beginnercoder

答えて

0

まず、あなたは、単一引用符を使用していることを確認してください。 (a.k.a. ’またはunicode 8217)は、ASCII文字39,'と同じではありません。

次に、一重引用符で囲まれた一重引用符をエスケープすることはできません。 Here's an answer私は以前、それについて書いていました。

ただし、一重引用符を二重引用符で囲むか、一重引用符で囲まれた文字列の外側にエスケープすることはできます。たとえば、次のいずれかが動作するかもしれません:

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

または

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

代わりに、あなたはそれが同じ上の他の場所に表示されていないことを信頼し、あなたが興味のある部分だけを置き換えることができライン:

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

文字が私に単一引用符(')のようには見えません。一重引用符を使用していることを確認してください。

実際に入力している文字は「right single quote mark」です。 「一重引用符」とは、実際には「apostrophe」です。

次は動作するはずです:

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

や、あなたの最初の選択肢が、(私はアポストロフィあると推定)埋め込まれた単一引用符をエスケープすることを避けるために、二重引用符で:

sed -e "s/'root'@'localhost'/'root’@'%'/g" rice_2616.sql 
関連する問題