在我的Java应用程序中,我需要修改远程属性文件。
此文件通过SSH访问,目前通过调用远程服务器上的sed
进行修改。
我的问题是要修改的属性文件包含由特殊字符(例如密码)组成的项目。需要对这些特殊字符进行转义,以便正确修改属性的值。
我的问题是:有没有比逃避每一个特殊角色更好的方法?有没有一种方法可以逃脱所有特殊字符?
提前谢谢。
答案 0 :(得分:0)
之类的东西?
MyString="[some*char+and.word\\with/cntrl]"
printf "%s""${MyString}" | sed 's|\\|\\&|g;s|[][*.?/]|\\&|g' | read -r MyString
# printf "%s\n" "${MyString}"
\[some\*char+and\.word\\with\/cntrl\]
答案 1 :(得分:0)
我最终决定使用那段代码逃避每一个问题:
// 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("'"), "'\"'\"'");