2014-05-24 62 views
1

在GNU中,我該如何grep一個XML文件?場景:如何grep一個XML文件?

<HelloOperation> 
    <Request>Lemon</Request> 
</HelloOperation> 
<HelloOperation> 
    <Request>Banana</Request> 
</HelloOperation> 
<HelloOperation> 
    <Request>Orange</Request> 
</HelloOperation> 
<DifferentOperation> 
    <Request>Banana</Request> 
</DifferentOperation> 

任何想法,我怎麼會用grep這使得我只會得到香蕉HelloOperation不是裏面DifferentOperation?比如說我不能使用awk。

+1

您可以使用'sed'獲得此問題的具體結果,但是當您開始嘗試「查詢」真正的xml數據時,它會很快崩潰。 Awk會好一點,但是xml需要一個xml工具。如果你期望做比上述問題更大的任何事情,那麼你必須開始計劃時間來學習如何使用'xmllint',或者一個xml庫,用於perl,python,java等等,或者如下所述,'xmlstarlet '。祝你好運! (順便提一句,這是一個每天都會出現在S.O上的問題,你是否花時間看現有的問題?) – shellter

回答

3

如何使用xmlstartlet?您可以使用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