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ãopsegue uma nova linha, se no final do arquivo, apenas imprimapvalor.