Regex Bash,grep在具有指定字符串的两行之间

Regex Bash,grep在具有指定字符串的两行之间,regex,bash,grep,Regex,Bash,Grep,示例_file.txt: a43 <un:Test1 id="U111"> abc1 cvb1 bnm1 </un:Test1> <un:Test1 id="U222"> abc2 cvb2 bnm2 </un:Test1> a43 abc1 cvb1 bnm1 abc2 cvb2 bnm2 我只需要和第一个之间的所有行。这些行的数量在不同的输入文件中有所不

示例_file.txt:

    a43
    <un:Test1 id="U111">
    abc1
    cvb1
    bnm1
    </un:Test1>
    <un:Test1 id="U222">
    abc2
    cvb2
    bnm2
    </un:Test1>
a43
abc1
cvb1
bnm1
abc2
cvb2
bnm2
我只需要
和第一个
之间的所有行。这些行的数量在不同的输入文件中有所不同。我试过了

grep-E-A100000'
example_file.txt|grep-B100000
'

但是它也返回
下面的所有字符串。我知道最好使用xmlparser来解析这类文件,但不允许在服务器上安装额外的lib,这样我只能使用grep、awk、sed等。请帮帮我。

你是说这个吗

sed -n '/<un:Test1 id="U111">/,/<\/un:Test1>/p' file
注意:如果同一localname(“Test1”)有不同的名称空间,则需要添加
名称空间-uri()

您的意思是这样的吗

sed -n '/<un:Test1 id="U111">/,/<\/un:Test1>/p' file

注意:如果同一localname(“Test1”)有不同的名称空间,则需要添加
名称空间-uri()

,该名称空间将包括范围边界到输出中。是!多谢各位@EBobrov以xpath方式添加了xmllint,因为您的文件是xml。@Kent只要sed命令仍然在这个答案中,我就不能进行升级表决。我想因为xmllint而投票piece@Kent非常感谢。但是--xpath是未知选项,当我使用--path时,它给出“名称空间警告:xmlns:uriconfigdata.xsd不是绝对的”。我不明白这个问题.那会把范围边界包括在输出中.是的!多谢各位@EBobrov以xpath方式添加了xmllint,因为您的文件是xml。@Kent只要sed命令仍然在这个答案中,我就不能进行升级表决。我想因为xmllint而投票piece@Kent非常感谢。但是--xpath是未知选项,当我使用--path时,它给出“名称空间警告:xmlns:uriconfigdata.xsd不是绝对的”。我不明白这个问题.你的输入是XML文件吗?是的,我的输入是XML。您能推荐一些更有用的方法来检索所需的数据吗?
xmllint
是xml的方法。您的输入是xml文件吗?是的,我的输入是xml。您能推荐一些更有用的方法来检索所需的数据吗?
xmllint
正如所建议的,这是xml的发展方向。