为调用sed而转义java中的特殊字符



在我的Java应用程序中,我需要修改一个远程属性文件。这个文件是通过SSH访问的,目前通过调用远程服务器上的sed来修改。

我的问题是,要修改的属性文件包含由特殊字符(如密码)组成的项。这些特殊字符需要转义,以便正确修改属性的值。

我的问题是:有比逃离每一个特殊角色更好的方法吗?有没有一种方法可以逃脱所有特殊字符?

提前谢谢。

类似的东西?

MyString="[some*char+and.word\with/cntrl]"
printf "%s""${MyString}" | sed 's|\|\&|g;s|[][*.?/]|\&|g' | read -r MyString
# printf "%sn" "${MyString}"
[some*char+and.word\with/cntrl]

我最终决定使用以下代码来转义每一个有问题的字符:

// Replace backslashes first, as it is used for escaping
myVar = myVar.replaceAll(Pattern.quote("\"), "\\\\");
// Then replace all the other special characters
myVar = myVar.replaceAll(Pattern.quote("/"), "\\/");
myVar = myVar.replaceAll(Pattern.quote("&"), "\\&");
myVar = myVar.replaceAll(Pattern.quote("$"), "\\\$");
myVar = myVar.replaceAll(Pattern.quote("'"), "'"'"'");

最新更新