Você poderia fazer assim com o awk:
unique.awk
FNR == NR {
for(i=1; i<=NF; i++)
if(++w[$i] > 1)
not_unique[$i] = 1
next
}
{
for(i=1; i<=NF; i++)
if(not_unique[$i])
next
}
1
Execute assim:
awk -f unique.awk infile infile
Saída:
F G
Como um verso:
awk 'FNR == NR { for(i=1; i<=NF; i++) if(++w[$i] > 1) not_unique[$i] = 1; next } { for(i=1; i<=NF; i++) if(not_unique[$i]) next } 1' infile infile
Explicação
O arquivo precisa ser analisado duas vezes, primeiro para localizar todas as palavras não exclusivas e, em seguida, para imprimir as linhas que contêm apenas palavras únicas. Isso é refletido na estrutura do programa, o primeiro bloco cria um hash contendo palavras que não são exclusivas, o segundo verifica cada linha e a ignora se tiver palavras não únicas. O 1
final no final só é atingido quando ocorrem linhas exclusivas e invoca a ação padrão do awk ( { print $0 }
).