如何忽略 sed 中的特殊字符?

如何忽略 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"

它确实修改了,ToFile但字符串中没有 2 \。如何确保它们被识别为字符串的一部分?

答案1

尝试转义 sed 正则表达式中的“。”,以提高准确性。

对于 ToString 变量:

  1. 转义 '\',以便 shell 解释器将其扩展为单个斜线(在下面的第三点中),
  2. 定义此变量时,请使用单引号,以免其扩展,并且
  3. 在 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"

相关内容