@ OP, все решения grep
имеют фундаментальный «недостаток» в том, что он пропустит счет, если более 1 <elem>
тегов будет одним на строку. Используйте awk
для программного подсчета
awk 'BEGIN{
totalelem=0
totalendelem=0
}
/<elem>/{
m = split($0,a,"<elem>") # or m = gsub(/<elem>/,"")
totalelem+=m-1
}
/<\/elem>/{
m = split($0,b,"</elem>") # or m = gsub("</elem>","")
totalendelem+=m-1
}
END{
print "Total elem tags: " totalelem
print "Total end elem tags: " totalendelem
# if you want to make sure each elem tag is enclosed by corresponding end elem tag
if ( totalelem == totalendelem ){
print "Equal start and end tags"
}
}
' file
это решение предполагает, что вы знаете, как будут выглядеть ваши теги elem. Нет <elem />
или те с дополнительными атрибутами ..