unix - 使用 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
问题是当我运行脚本时文件保持不变。
我已经回显了变量,并且所有变量都返回了正确的值。
解决方案
假设您拥有的文件是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 编辑文件
推荐阅读
- jboss - How to configure JBoss EAP (6.4.x) for a combined HTTP/HTTPS reverse proxy?
- angular - 为孩子使用路由器插座时如何将CSS类添加到Angular父级
- cytoscape.js - Making cytoscape.js animations play continuously
- r - 宽度、高度、分辨率似乎不影响导出绘图的配置
- python - python在方法中调用方法
- geolocation - 用于跟踪用户位置的 Google Geolocation Api - 国家、城市、州、时区
- matrix - SAS Base - 关联规则矩阵
- google-apps-script - “您无权调用 showModalDialog”
- reactjs - node-sass-chokidar 只会将一个文件夹而不是一个文件输出到我的 src 目录中
- python - OPC UA 服务器实现