example_file.txt:
a43
<un:Test1 id="U111">
abc1
cvb1
bnm1
</un:Test1>
<un:Test1 id="U222">
abc2
cvb2
bnm2
</un:Test1>
我只需要<un:Test1 id="U111">
和第一个</un:Test1>
之间的所有行。这些行的数量从一个输入文件到另一个输入文件有所不同。我尝试了
grep -E -A100000 '<un:Test1 id="U111">'
example_file.txt |GREP -B100000 '</un:Test1>'
,但它也返回所有字符串bellow <un:Test1 id="U222">
。我知道最好使用XMLPARSER来解析此类文件,但是不允许在服务器上安装其他LIB,因此我只能使用GREP,AWK,SED等。请帮我。
您的意思是吗?
sed -n '/<un:Test1 id="U111">/,/</un:Test1>/p' file
用XMLLINT更新
如果您的输入是XML,则可以尝试:
xmllint --xpath "//*[local-name()='Test1'][@id='U111']" file.xml
注意:如果您对同一localname(" test1")有不同的名称空间,则需要添加namespace-uri()