2013-02-21 60 views
1

我有一個像下面如何在unix中搜索xml文件的標籤值?

<productCode> 
    <codingScheme>BDR</codingScheme> 
</productCode> 
<productCode> 
    <codingScheme>CNY</codingScheme> 
</productCode> 
... 
<riskCategoryCode> 
    <codingScheme>BDR</codingScheme> 
</riskCategoryCode> 
<riskCategoryCode> 
    <codingScheme>NCP</codingScheme> 
</riskCategoryCode> 
... 

現在我需要算這樣BDR價值究竟有多少隻codingSchemeproductCode標籤的XML。

我寫這個劇本:

Word1="<productCode>"; 
Word2="<codingScheme>BDR"; 
Word3="$Word1${Var}$Word2"; 
echo "$Word3"; 
grep -c "$Word3" fileFullName; 

但它計算的productCodecodingScheme總出現次數(例如productCode 10倍和codingScheme 20次,然後返回30不要求)。

在此先感謝所有。快速響應非常感謝。
問候,
維傑

回答

0
awk '{if($0~/\<codingScheme\>BDR\<\/codingScheme\>/){if(x~/productCode/)count++};x=$0}END{print count}' your_file 

測試:

> cat temp 
<productCode> 
<codingScheme>BDR</codingScheme> 
</productCode> 
<productCode> 
<codingScheme>CNY</codingScheme> 
</productCode> 
<productCode> 
<codingScheme>BDR</codingScheme> 
</productCode> 
...... 
<riskCategoryCode> 
<codingScheme>BDR</codingScheme> 
</riskCategoryCode> 
<riskCategoryCode> 
<codingScheme>NCP</codingScheme> 
</riskCategoryCode> 
> awk '{if($0~/\<codingScheme\>BDR\<\/codingScheme\>/){if(x~/productCode/)count++};x=$0}END{print count}' temp 
2 
>