Usando comm
nos dados classificados:
$ comm <( sort -n file1 ) <( sort -n file2 )
1
2
2
3
5
6
Esta saída é delimitada por tabulações. Podemos marcar tudo nas colunas 1 e 2 como "NoMatch" e na coluna 3 como "Match" com awk
:
$ comm <( sort -n file1 ) <( sort -n file2 ) |
awk -F$'\t' 'BEGIN { OFS="," } $3 { print $3, $3, "Match"; next } { print $1, $2, "NoMatch" }'
1,1,Match
2,2,Match
2,,NoMatch
3,3,Match
5,,NoMatch
,6,NoMatch
O script awk
lerá a entrada delimitada por tabulação ( -F$'\t'
) e usará vírgulas para o delimitador do campo de saída ( OFS=","
). Se houver algo no campo 3, ele emitirá duas vezes com Match
no terceiro campo e continuará com a próxima linha. Caso contrário, ele exibirá os campos 1 e 2 da entrada junto com NoMatch
no terceiro campo.