Este foi o mais próximo:
grep -Eo '[0-9]+|' filename | sort -u | wc -l
mas perdeu o objetivo por
- não ancora a correspondência no início da linha
- classificando / removendo desnecessariamente duplicatas dos dados
Para ancorar a expressão, coloque "^" no início do padrão e escape do "|" (já que é um metacaractere):
grep -Eo '^[0-9]+\|' filename | sort -u | wc -l
Próximo - descarte o sort -u . O grep ignora as linhas de continuação, e parece possível que algumas "duplicatas" possam ser removidas e que não sejam realmente duplicadas se as informações extras forem usadas.
Por fim, descarte o wc -l : POSIX grep tem uma opção -c que diz ao grep para imprimir a contagem de correspondências. Solte a opção -o (não é necessário). Então tudo que você precisa é
grep -Ec '^[0-9]+\|' filename
