Предполагая, что вход имеет формат, как показано в примере, вы можете использовать код ниже.
Это означает, что каждая комбинация соответствующих тегов <ABC>
и </ABC>
должна находиться в одной строке с текстовым значением между ними.
grep -o '<ABC>[^<]*</ABC>' input.xml |sort -u|wc -l
Команда может не работать, если входные данные отформатированы другими способами, или если значение между <ABC>
и </ABC>
содержит другие теги.
При использовании примера ввода из вопроса будет напечатано
3
Это даже работает когда в строке более одной пары <ABC>
и </ABC>
.
с
<BLAH><BLAH><BLAH>
<ABC>123456</ABC>foo<ABC>1234567</ABC>
<ABC>123456</ABC>
<ABC>adfadfaf</ABC>
<ABC>gdsgdhghd</ABC>
</BLAH></BLAH></BLAH>
выводит
4