Desajeitado mas trabalhando:
BEGIN {
FS=OFS="\t"
}
NR==FNR {
# 5 = number of columns
for (i=0;i<=5;i++) {
a[$1,i]=$i }
}
{ if ( a[$1,0] != $0 ) {
b=""
for (i=1;i<=5;i++) {
if ( a[$1,i] != $i ) {
b=b i", "
}
}
print "Line No." FNR," Column No. ",b
}
}
No entanto, sugiro strongmente que você escreva um programa FORTRAN (ex.) para isso, pois você pode ler os dados em pedaços de - digamos - 10.000 linhas, enquanto awk
-solutions precisa conter pelo menos um arquivo na RAM o que pode ser um problema para seus arquivos de tamanho GB. Poderia ser assim:
- leia blocos de dados de cada arquivo no array (linha e coluna)
- compare matrizes e crie uma matriz lógica com o resultado de a (i, j) = b (i, j)
- nós matriz lógica para criar saída
- imprima a saída e leia o próximo bloco
Como seus arquivos são classificados e apresentam todas as linhas, é bastante simples.