首页 > 解决方案 > 使用 Sed 中的变量替换文本不起作用

问题描述

我需要使用 Sed 修改一个 xml 文件来替换该行

url="jdbc:oracle:thin:@//ttpdbscan.axel.net:1521/axel.telco.net"

url="jdbc:oracle:thin:@//ttpdbscan.axeltelecom.net:1598/axelPRD.telco.net"

我已经存储了这样的行

ACTUAL_DB=$(sed -n 's#^.*url="\(.*\).*"#\1#p' $FILE.xml)

NEW_DB="jdbc:oracle:thin:@//ttpdbscan.axeltelecom.net:1598/axelPRD.telco.net"

而替换方法就是这个

sed -i "s#$ACTUAL_DB#$NEW_DB#g" $File.xml

问题是当我运行脚本时文件保持不变。

我已经回显了变量,并且所有变量都返回了正确的值。

标签: unixsed

解决方案


假设您拥有的文件是File.xml(如果它不是变量),您可以使用

sed -i "s#${ACTUAL_DB}#${NEW_DB}#g" File.xml

也尝试使用其他分隔符:

sed -i "s~${ACTUAL_DB}~${NEW_DB}~g" File.xml

如果您sed不支持-i使用

sed "s~${ACTUAL_DB}~${NEW_DB}~g" File.xml 1<> File.xml

查看sed 编辑文件


推荐阅读