3

これに似たコマンドがあります:

find ./ -type f | xargs gsed -i -r 's/[$][A-Za-z_\'"]/testing

このコマンドを機能させたいと思います。残念ながら、一重引用符と二重引用符はコマンドを壊します。この文字列をエスケープして、このコマンドを機能させるにはどうすればよいですか?

[内に一重引用符があるためこの質問はこれと同じではありません。しかし、少し変更するだけで問題が解決する場合は、知りたいです。

@、#、\ を使用してさまざまな方法を試しましたが、まだ成功していません。

4

3 に答える 3

6

これを見てください:

kent$  cat file
''''''
""""""

kent$  sed 's/\x27/single /g;s/\x22/double /g' file
single single single single single single 
double double double double double double 

したがって、cmdを次のように変更します。

find ./ -type f | xargs gsed -i -r 's/[$][A-Za-z_\x22\x27]/testing'

一重/二重引用符の部分だけで、find/xargs の部分が問題ないかどうかを確認しなかったことに注意してください。

于 2013-03-08T21:21:00.007 に答える
1

一重引用符で一重引用符を使用することはできません。あなたはできる:

  1. 一重引用符を終了してから、バックスラッシュ付きの引用符を使用します。'...'\'

  2. 一重引用符を終了してから、一重引用符を二重引用符で囲んで使用します。'...'"'"

于 2013-03-08T21:18:16.333 に答える
0

または、sedスクリプトを二重引用符で囲んで、エスケープする必要があるものをエスケープしてみてください。

gsed -i -r "s/[$][A-Za-z_'\"]/testing/" 
于 2013-03-09T13:01:08.593 に答える