Unix 使用Sed中的变量替换文本无效
我需要使用Sed修改一个xml文件来替换该行Unix 使用Sed中的变量替换文本无效,unix,sed,Unix,Sed,我需要使用Sed修改一个xml文件来替换该行 url="jdbc:oracle:thin:@//ttpdbscan.axel.net:1521/axel.telco.net" 与 我已经存储了这样的行 ACTUAL_DB=$(sed -n 's#^.*url="\(.*\).*"#\1#p' $FILE.xml) ACTUAL_DB= "jdbc:oracle:thin:@//ttpdbscan.axel.net:1521/axel.telco.net " 及 替换的方法是这个 sed -
url="jdbc:oracle:thin:@//ttpdbscan.axel.net:1521/axel.telco.net"
与
我已经存储了这样的行
ACTUAL_DB=$(sed -n 's#^.*url="\(.*\).*"#\1#p' $FILE.xml)
ACTUAL_DB= "jdbc:oracle:thin:@//ttpdbscan.axel.net:1521/axel.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“s~${ACTUAL_DB}~${NEW_DB}~g”File.xml 1 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“s~${ACTUAL_DB}~${NEW_DB}~g”File.xml 1 File.xml
请参见,因此我将输出保存到另一个文件中,并发现字符串有额外的空间 看起来是这样的
ACTUAL_DB=$(sed -n 's#^.*url="\(.*\).*"#\1#p' $FILE.xml)
ACTUAL_DB= "jdbc:oracle:thin:@//ttpdbscan.axel.net:1521/axel.telco.net "
我用鼠标移走了多余的空间
"$(echo -e "${ACTUAL_DB}" | tr -d '[:space:]')"
现在sed按预期工作,因此我将输出保存到另一个文件中,并发现字符串有额外的空间 看起来是这样的
ACTUAL_DB=$(sed -n 's#^.*url="\(.*\).*"#\1#p' $FILE.xml)
ACTUAL_DB= "jdbc:oracle:thin:@//ttpdbscan.axel.net:1521/axel.telco.net "
我用鼠标移走了多余的空间
"$(echo -e "${ACTUAL_DB}" | tr -d '[:space:]')"
现在sed正在按预期工作尽管使用
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
是一个路径,则不应在那里添加$
。当我回显实际的\u DB时,它会显示正确的值。我做了一个测试,在那里我创建了另一个变量并分配了sed与新变量一起工作的硬编码文本,如果我将它与我得到的变量进行比较,就会发现它们是相同的,尽管使用sed
修改xml是不可取的(请改用xmlstarlet之类的工具),我看不出给定的示例和使用的sed命令有任何问题..如果您执行sed“s#react#u DB#NEW#DB#g”$File.xml>NEW.xml
新文件是否修改了内容?能否添加echo${react#u DB}
sed-I“s#DB}{react#g”File.xml>的输出?如果File.xml
是一个路径,则不应在那里添加$
。当我回显实际的\u DB时,它会显示正确的值。我做了一个测试,在那里我创建了另一个变量并分配了硬编码文本,sed与这个新变量一起工作,如果我将它与我得到的变量进行比较,就会发现它们是相同的