我想在Linux中使用sed替换包含$ {user.home}的文件中的字符串,但我无法做到。我使用sed尝试了以下选项,但失败了。
<property name="dev.home" value="${user.home}"/>
${user.home}
:sed -i "s/$${user.home}/r_str/g" 1.xml
sed -i "s/${user.home}/r_str/g" 1.xml
sed -i "s/\$\{user\.home\}/r_str/g" 1.xml
<property name="dev.home" value="${user.home}"/>
<property name="dev.home" value="/dev"/>
答案 0 :(得分:2)
您无需转义花括号{}
echo '${user.home}' | sed "s/\${user.home}/lol$/"
lol$
答案 1 :(得分:2)
使用xmlstarlet查找和更新属性:
xmlstarlet edit --omit-decl --update 'property[@value="${user.home}"]/@value' --value '/dev' file
输出:
<property name="dev.home" value="/dev"/>