Você pode usar awk
para isso:
awk 'FNR==NR{a[$1];next};!($1 in a)' file1 file2 > file3
Explicação:
-
FNR == NR
: esse teste é verdadeiro quando o número de registros é igual ao número de registros no arquivo. Isso só é válido para o primeiro arquivo, pois o segundo arquivoNR
será igual ao número de linhas do arquivo1 +FNR
. -
a[$1]
: crie um índice de elemento de matriz do primeiro campo do arquivo1. -
next
: pule para o próximo registro para que nenhum processamento seja feito no arquivo1. -
!($1 in a)
: Veja se o primeiro campo ($ 1) está presente na matriz, ou seja, no arquivo1, e imprima a linha inteira (para o arquivo3).
Baseado em um dos exemplos do #awk wiki .