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.