我有一个XML文件。从那以后,我想在两个字符串之间复制文本。
XML文件中的示例行:
some stuff.........<br/><br/><br/>http://example.com/copythislink.php<br/><br/>After you.........some more stuff
我想复制
之间的所有文字<br/><br/><br/>
和
<br/><br/>After you
这两个字符串只在xml文件中出现一次。我尝试使用sed
。但是,由于<
,它会返回错误。
答案 0 :(得分:2)
您可以使用此sed
,
sed 's#.*<br/><br/><br/>\(.*\)<br/><br/>After you.*#\1#' yourfile.xml
<强>(OR)强>
如果您只想提取网址。
sed -n 's#.*<br/><br/><br/>\(.*\)<br/><br/>After you.*#\1#p' yourfile.xml
答案 1 :(得分:2)
使用gnu grep
grep -Po '(?<=<br/><br/><br/>)((?!<br/><br/>After you).)*' file
(?<=<br/><br/><br/>)
是一个积极的后视断言(?!<br/><br/>After you)
是一个负面的后瞻断言答案 2 :(得分:0)
如果您只需要提取URI,那么简单grep
就足够了。例如,像:
grep -o "http:\/\/[A-Za-z0-9\.\/]*" test.xml
但是,如果您真的想要捕获这两个字符串之间的文本(无论哪种内容,即使它不包含URI),那么sat的解决方案效果很好。