Possível solução com awk
:
awk 'FILENAME == ARGV[1] {
m[$2,$3] = $0;
next;
}
FILENAME == ARGV[2] {
if (!(($2,$3) in m)) {
m[$2,$3] = $0;
}
next;
}
{
if (!(($2,$3) in m)) {
print $0 >"out.txt";
}
}' file3.txt file2.txt file1.txt
Primeiro, lemos o primeiro arquivo e criamos o array com as chaves, colunas 2 e 3.
Em seguida, lemos o segundo arquivo e verificamos se a chave da coluna 2 e 3 existe na primeira matriz, se ela não existir, a adicionamos à matriz.
Finalmente, lemos o primeiro arquivo, checamos a chave existente na matriz e, se ela não existir, é a linha em que estamos interessados.
out.txt deve conter linha (s) no primeiro arquivo que não seja apresentado em outros dois arquivos:
abd 2 b f12 f14 f13