【发布时间】:2019-07-07 13:45:53
【问题描述】:
试图查找和替换 xml 文件中的内容
我正在针对各种主机运行 nmap,并为每次运行获取一个 xml 输出(这发生在管道中) 我将每次运行的 xml 文件合并到一个合并的 xml 中
以上只是提供背景..
我的实际问题是:
我想替换合并的xml文件中的一些内容
我试过 sed -i -e 但它仅适用于我试图更改链接但第二行不起作用的第三行,可能是由于行中的空格
我有 test.xml 文件,我需要在其中替换一些内容
<?xml version="1.0"?>
<!DOCTYPE nmaprun PUBLIC "-//IDN nmap.org//DTD Nmap XML 1.04//EN" "https://svn.nmap.org/nmap/docs/nmap.dtd">
<?xml-stylesheet href="https://svn.nmap.org/nmap/docs/nmap.xsl" type="text/xsl"?>
在第二行中,我想在 nmaprun (Remove ' PUBLIC........ until .. .dtd") 之后删除内容 > 应该保留
替换后应该是这样的
<!DOCTYPE nmaprun>
第三行我想替换https://svn.nmap.org/nmap/docs/nmap.xsl
file:///usr/local/bin/../share/nmap/nmap.xsl
替换后应该显示为
<?xml-stylesheet href="file:///usr/local/bin/../share/nmap/nmap.xsl" type="text/xsl"?>
两行替换后应该显示为
<?xml version="1.0"?>
<!DOCTYPE nmaprun>
<?xml-stylesheet href="file:///usr/local/bin/../share/nmap/nmap.xsl" type="text/xsl"?>
【问题讨论】:
-
您可以在 sed 中使用 # 而不是 / 来避免转义实际的 '/'。
-
我试过了~,+,#,它适用于第三行(我猜是因为内容中没有空格要替换)。它不适用于有空格的第二行。有没有办法逃离空间? (我的意思是如果这是这里的问题)
-
是的,您可以使用 \ 转义空格
标签: shell replace xmlhttprequest find