Tengo algún problema técnico con el código awk

Tengo algún problema técnico con el código awk

Esto está relacionado con una de mis preguntas anteriores:Comparar archivos de texto usando Bash y AWK

archivo1.txt

Name  Col1  Col2  Col3  
-----------------------
row1  1     4     7        
row2  2     5     8         
row3  3     6     9 

archivo2.txt

Name  Col1  Col2  Col3  
-----------------------        
row1  1     4     7
row2  2     5     999

De alguna manera he descubierto una manera de comparar dos archivos. Pero por alguna razón no me da el resultado que quiero. Aquí está el código que uso para comparar los archivos.

awk '
FNR < 2 { next }
FNR == NR {
    for (i = 2; i <= NF; i++) 
    {
        a[i,$1] = $i; 
    }    
    b[$1];
    next;

}
($1 in b) {
   for (i = 2; i <= NF; i++) 
   {
      if (a[i,$1] == $i) 
          printf("%s->Col%d: %d vs %d: Equal\n", $1, i-1, a[i,$1], $i);
      else 
          printf("%s->Col%d: %d vs %d: Not Equal\n", $1, i-1, a[i,$1], $i);
   }
} ' file1.txt file2.txt

Resultado Esperado:

row2->Col1: 1 vs 1: Equal
row2->Col2: 4 vs 4: Equal
row2->Col3: 7 vs 7: Equal
row1->Col1: 2 vs 2: Equal
row1->Col2: 5 vs 5: Equal
row1->Col3: 8 vs 999: Not Equal

Resultado actual:

row2->Col1: 1 vs 1: Equal
row2->Col2: 4 vs 4: Equal
row2->Col3: 0 vs 7: Not Equal
row1->Col1: 2 vs 2: Equal
row1->Col2: 5 vs 5: Equal
row1->Col3: 0 vs 999: Not Equal

No sé por qué 0 es parte del resultado. ¿Alguien sabe por qué aparece 0?

EDITAR: Aquí está el problema. El primer bucle for solo se repite una vez. ¿Por qué?

Respuesta1

Error: cambiar

FNR == NR {
    for (i = 2; i <= NF; i++) 
    {
        a[i,$1] = $i; 
        b[$1];
        next;
    }
}

a

FNR == NR {
    for (i = 2; i <= NF; i++) 
    {
        a[i,$1] = $i; 
    }
    b[$1];
    next;
}

Estabas llamando nextdespuési==2

información relacionada