Usar o GNU awk
onde ele suporta length(array)
recursos específicos (e alguma outra awk
implementação que possa suportar) e não é necessário se os arquivos forem classificados.
gawk 'FNR==NR{seen[$0];next} ($0 in seen){delete seen[$0]};
END{print (!length(seen))?"Matched":"Not Matched"}' file2 file1
Isso está lendo o arquivo2 em uma matriz chamada seen
com a chave como linha inteira do arquivo2 .
Em seguida, leia o arquivo1 e, para cada linha, se corresponder às linhas da matriz vista, exclua essa chave.
No final, se a matriz estava vazia, todas as linhas do arquivo2 existem no arquivo1 e serão impressas Matched
, caso contrário, serão exibidas Not Matched
.
Para a compatibilidade em todas as awk
implementações.
awk 'FNR==NR{seen[$0];next} ($0 in seen){delete seen[$0]};
END{for(x in seen);print (!x)?"Matched":"Not Matched"}' file2 file1
Para ignorar linhas vazias / ou linhas com espaços em branco somente se no arquivo2 , você precisará adicionar NF
à condição NR==FNR && NF {...
para pular a leitura delas na matriz.
file2
contém 2 linhasA
, você precisafile1
conter pelo menos 2 linhasA
?