Dados dois arquivos classificados , comm faria isso por você.
Veja as combinações das opções de linha de comando -2 -3 e -1 -3 , por exemplo.
Digamos que eu tenha duas listas:
guests-2016.txt :
Peter
Michael
Frank
Dirk
guests-2017.txt :
Mark
Michael
Dirk
Lilly
Como posso criar duas novas listas de convidados
Os convidados que estavam em guests-2016.txt , mas não estão em guests-2017.txt ( former_guests.txt )
Os convidados que não estavam em guests-2016.txt , mas estão em guests-2017.txt now ( new_guests.txt )
Linhas em branco devem ser ignoradas. Somente utilitários padrão devem ser usados.
Minha ideia seria usar diff e fazer um pós-processamento.
Verifique, isso faz o trabalho. Eu posso adicionar uma explicação, se você for necessário.
awk '
/^$/{next}
FNR == NR {guest_2016[$1] = 1}
FNR != NR {
if(!guest_2016[$1])
print $1 > "new_guests.txt"
delete guest_2016[$1];
}
END {
for(i in guest_2016)
print i > "former_guests.txt"
}' guests-2016.txt guests-2017.txt