我有一个像下面的xml
<productCode>
<codingScheme>BDR</codingScheme>
</productCode>
<productCode>
<codingScheme>CNY</codingScheme>
</productCode>
...
<riskCategoryCode>
<codingScheme>BDR</codingScheme>
</riskCategoryCode>
<riskCategoryCode>
<codingScheme>NCP</codingScheme>
</riskCategoryCode>
...
现在我需要计算codingScheme
标记下productCode
标记的 BDR 值的数量。
我写了这个剧本:
Word1="<productCode>";
Word2="<codingScheme>BDR";
Word3="$Word1${Var}$Word2";
echo "$Word3";
grep -c "$Word3" fileFullName;
但它会计算productCode
和codingScheme
的总出现次数(例如productCode
10次,codingScheme
次20次,然后返回30次,这不是必需的。)< / p>
答案 0 :(得分: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
>