Com base no exemplo que você deu,
este comando awk
produzirá a saída que você está pedindo:
awk '
{
i = index($0, "|")
if (i == 0) {
print "Error: line [" $0 "] does not have a \"|\" character."
} else {
prefix = substr($0, 1, i-1)
if (++count[prefix] == 1) print
}
}'
As duas primeiras linhas de código verificam se cada linha de entrada contém |
.
O próximo extrai a string antes do primeiro caractere |
(por exemplo, "pergunta um").
count
é uma matriz associativa
que usamos para contar quantas vezes cada prefixo apareceu.
Se este for o nº 1 (ou seja, a primeira aparição), imprima a linha;
caso contrário, não imprima nada.