【发布时间】:2020-09-29 10:12:14
【问题描述】:
我需要使用 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
问题是当我运行脚本时文件保持不变。
我已经回显了变量并且它们都返回了正确的值。
【问题讨论】:
-
虽然不建议使用
sed修改 xml(改用 xmlstarlet 之类的工具),但我认为给定的示例和使用的 sed 命令没有任何问题.. -
如果你这样做
sed "s#$ACTUAL_DB#$NEW_DB#g" $File.xml > new.xml会发生什么新文件是否有修改内容? -
能否添加
echo ${ACTUAL_DB}的输出 -
sed -i "s#${ACTUAL_DB}#${NEW_DB}#g" File.xml?如果File.xml是路径,则不应在其中添加$。 -
当我回显 ACTUAL_DB 时,它显示了正确的值。我做了一个测试,我创建了另一个变量并分配了 sed 与该新变量一起使用的硬编码文本,如果我将它与我得到的那个进行比较,则表明它们是相同的