我有以下代码:
ToString="java.extended.properties=-XX\:MaxPermSize\=128m -XX:CompileCommand=exclude,com/tibco/repo/RVRepoProcessBridge,handleServerHeartbeat"
sed -i "s@.*java.extended.properties.*@$ToString@g" "$ToFile"
它确实修改了,ToFile
但字符串中没有 2 \
。如何确保它们被识别为字符串的一部分?
答案1
尝试转义 sed 正则表达式中的“。”,以提高准确性。
对于 ToString 变量:
- 转义 '\',以便 shell 解释器将其扩展为单个斜线(在下面的第三点中),
- 定义此变量时,请使用单引号,以免其扩展,并且
- 在 sed 中使用时扩展(通过双引号),以获得正确的最终结果。
因此,这样的事情应该可行:
ToString='java.extended.properties=-XX\\:MaxPermSize\\=128m -XX:CompileCommand=exclude,com/tibco/repo/RVRepoProcessBridge,handleServerHeartbeat'
sed -i "s@.*java\.extended\.properties.*@""$ToString""@g" "$ToFile"