在 Linux 中使用 sed 替换包含 ${user.home} 的文件中的字符串
Replacing a string in a file that contains ${user.home} using sed in Linux
我想在 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"/>
你不需要转义花括号{}
echo '${user.home}' | sed "s/${user.home}/lol$/"
lol$
使用 xmlstarlet 查找和更新属性:
xmlstarlet edit --omit-decl --update 'property[@value="${user.home}"]/@value' --value '/dev' file
输出:
<property name="dev.home" value="/dev"/>
我想在 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"/>
你不需要转义花括号{}
echo '${user.home}' | sed "s/${user.home}/lol$/"
lol$
使用 xmlstarlet 查找和更新属性:
xmlstarlet edit --omit-decl --update 'property[@value="${user.home}"]/@value' --value '/dev' file
输出:
<property name="dev.home" value="/dev"/>