![내 awk 코드에 기술적인 문제가 있습니다.](https://linux55.com/image/38394/%EB%82%B4%20awk%20%EC%BD%94%EB%93%9C%EC%97%90%20%EA%B8%B0%EC%88%A0%EC%A0%81%EC%9D%B8%20%EB%AC%B8%EC%A0%9C%EA%B0%80%20%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
이것은 내 이전 질문과 관련이 있습니다.Bash 및 AWK를 사용하여 텍스트 파일 비교
파일 1.txt
Name Col1 Col2 Col3
-----------------------
row1 1 4 7
row2 2 5 8
row3 3 6 9
파일 2.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인지 아는 사람 있나요?
편집: 여기에 문제가 있습니다. 첫 번째 for 루프는 한 번만 반복됩니다. 왜?
답변1
오류: 변경
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;
}
next
나중에 전화해i==2