我很难用 sed 替换 XML 文件中的文本字符串,尽管我使用 grep 查找相同的字符串没有问题。由于要替换的新字符串和旧字符串包含很多特殊字符,我认为最好将它们存储在变量中,而不是使用大量反斜杠:
OLD_STRING='<property name="webServiceHost">${jboss.bind.address}</property>'
NEW_STRING='<!--<property name="webServiceHost">${jboss.bind.address}</property>-->'
Run Code Online (Sandbox Code Playgroud)
字符串似乎按预期存储:
$ echo $OLD_STRING; echo $NEW_STRING
<property name="webServiceHost">${jboss.bind.address}</property>
<!--<property name="webServiceHost">${jboss.bind.address}</property>-->
Run Code Online (Sandbox Code Playgroud)
Grep'ing 确认旧字符串存在于 XML 文件中:
$ grep "$OLD_STRING" jboss-beans.xml
<property name="webServiceHost">${jboss.bind.address}</property>
Run Code Online (Sandbox Code Playgroud)
但是以下 sed 命令不会产生任何输出:
sed -i 's/"$OLD_STRING"/"$NEW_STRING"/g' jboss-beans.xml
Run Code Online (Sandbox Code Playgroud)
知道我在这里缺少什么吗?