com o awk:
awk 'NR==FNR{a[$0];next}(!($0 in a)){print}' file2 file1
NR==FNR{a[$0];next}
:
Para o primeiro arquivo (arquivo2), crie uma matriz a
, com a chave $0
= linha inteira e vá para a próxima linha. NR é o número de registro global de awk e FNR é o número de registro de arquivo atual. A condição NR == FNR será válida apenas para o primeiro arquivo lido (arquivo2)
(!($0 in a){print}
:
Quando o primeiro arquivo2 terminar, leia arquivo1 e se a linha inteira $0
do arquivo1 não pertencer às chaves do array a
imprima esta linha.
Com grep:
grep -vxF -f file2 file1
-v
: captura as linhas não correspondentes
-x
: corresponde à linha inteira
-F
: faz uma correspondência fixa em vez da correspondência de padrão em -f
: use arquivo2 para carregar padrões
Para os dados atualizados para realizar uma comparação linha por linha, você pode usar o awk e não o grep:
awk 'NR==FNR{a[FNR]=$0;next}$0!=a[FNR]{print}' file2 file1
1,2,1,1
1,2,4,2
1,2,1,2
Obviamente, ambos os arquivos devem ter o mesmo número de linhas.