Tente isto:
$ awk 'NF && !($1 in a){a[$1];p=$1;print (getline == 0) ? p : p"\n"}' cat
abc
def
pqr
xyz
efg
Explicação
-
NF && !($1 in a)
: só processamos linha que não é linha em branco e o valor ainda não apareceu no array associativoa
. -
a[$1]
: se o valor não aparecer, nós o salvamos no array associativoa
. -
p=$1;print (getline == 0) ? $1 : p"\n"
: salvamos o valor na variávelp
. Se não for o final do arquivo, a variável de impressãop
segue uma nova linha, se no final do arquivo, apenas imprimap
valor.