У меня возникла техническая проблема с awk-кодом

Это связано с одним из моих предыдущих вопросов: сравнение текстовых файлов с использованием Bash и AWK

file1.txt

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

file2.txt

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

Я несколько вычислил способ сравнить два файла. Но почему-то это не дает мне результата, который я хочу. Горе со мной, поскольку я новичок. Вот код, который я использую для сравнения файлов.

 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 

Ожидаемый результат:

 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 

Фактический результат:

 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 

Я не знаю, почему 0 является частью вывода. Кто-нибудь знает, почему 0?

EDIT: Вот проблема. Первый цикл цикла повторяется только один раз. Кто-нибудь знает, почему?

Ошибка: изменение

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

в

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

Вы звонили после i==2