1

我有一个像下面这样的 xml

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

现在我需要计算仅在标签下有多少这样的BDR值。codingSchemeproductCode

我写了这个脚本:

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

但它计算和的总出现productCode次数codingScheme(例如,productCode10 次和codingScheme20 次,然后返回 30,这不是必需的)。

4

1 回答 1

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
>
于 2013-02-21T10:35:07.627 回答