$ join -t, file1 file2 | awk -F, '$3 == "v1" && $5 == "v2" { print $1 }'
a
$ join -t, file1 file2 | awk -F, '$3 == "v2" && $5 == "v1" { print $1 }'
b
Isto está assumindo que ambos os arquivos são classificados. Se não estiverem, use
join -t, <( sort file1 ) <( sort file2 ) | awk ...as above...
O comando join
produzirá
a,txt1,v1,txt5,v2
b,txt2,v2,txt6,v1
c,txt3,v1,txt7,v1
d,txt4,v2,txt8,v2
Este é o resultado de uma junção relacional entre os dois arquivos usando a primeira coluna como a chave de junção. Isso lista as linhas que possuem a mesma chave de junção em ambos os arquivos e os outros campos de cada arquivo.
O código awk
analisa isso e imprime a primeira coluna somente se as colunas 3 e 5 tiverem os valores que estamos procurando.