web-dev-qa-db-ja.com

二重引用符を一重引用符で置き換えるときにターミナルからsed

私が持っています

echo "A url: \\\"http:..."

"A url: \"http:..."(<-これが私のテキストファイルにある方法です)

私は欲しい

echo "A url: \'http:..."

しかし、すべての引用のため、私のsedコマンドは正しく機能しません

echo "A url: \\\"http:..." | sed -r 's/\\"+/\\\'/g'

失敗する理由がわかります(sedステートメントの中央にある単一引用符が問題ですが、どうすればよいですか?使用する3番目のタイプの引用符を探しましたが、見つけられませんでした。ハッキングはありませんか?

1
Mangobae

\"の出現箇所を\'で変更する場合は、次のようにします。

$ echo "A url: \\\"http:..." | sed -r "s/\\\"/\\'/g"
A url: \'http:...

sedの外側の引用符には"を使用するだけで、代わりに'を使用できます。複数の連続する"+があり、それらをすべて置き換えたい場合を除き、"は必要ありません。その場合は、sed -r "s/\\\"+/\\'/g"を使用してください。

3
terdon