Unix 如何grep XML文件?
在GNU中,如何grep XML文件?情景:Unix 如何grep XML文件?,unix,gnu,Unix,Gnu,在GNU中,如何grep XML文件?情景: <HelloOperation> <Request>Lemon</Request> </HelloOperation> <HelloOperation> <Request>Banana</Request> </HelloOperation> <HelloOperation> <Request>Orange&l
<HelloOperation>
<Request>Lemon</Request>
</HelloOperation>
<HelloOperation>
<Request>Banana</Request>
</HelloOperation>
<HelloOperation>
<Request>Orange</Request>
</HelloOperation>
<DifferentOperation>
<Request>Banana</Request>
</DifferentOperation>
柠檬
香蕉
橙色
香蕉
你知道我该怎么做吗?这样我就只能在HelloOperation中得到香蕉,而不是在不同的操作中?比如说,我不能使用awk。使用awk怎么样?您可以使用XPath选择节点
$ cat 1.xml
<?xml version="1.0"?>
<root>
<HelloOperation>
<Request>Lemon</Request>
</HelloOperation>
<HelloOperation>
<Request>Banana</Request>
</HelloOperation>
<HelloOperation>
<Request>Orange</Request>
</HelloOperation>
<DifferentOperation>
<Request>Banana</Request>
</DifferentOperation>
</root>
$ xmlstarlet sel -t -v './/HelloOperation/Request' 1.xml
Lemon
Banana
$cat 1.xml
柠檬
香蕉
橙色
香蕉
$xmlstarlet sel-t-v'.//helloooperation/Request'1.xml
柠檬
香蕉
您可以使用sed
获得这个问题的具体结果,但是当您开始尝试“查询”真实的xml数据时,它会很快崩溃。Awk会更好一些,但是xml需要一个xml工具。如果您希望做比上述问题更重要的事情,那么您必须开始计划时间来学习如何使用xmllint
,或用于perl、python、java等的xml库,或者如下文所述,xmlstarlet
。祝你好运(顺便提一下,这是一个每天都会在S.O.上出现的问题。你有没有花时间研究现有的问题?)