Почему я получаю другой вывод, когда меняю порядок петель в gawk Это оператор завершения из скрипта:
...
...
...
END{
for (i in req) {
for (j in req[i]) {
for (k in req[i][j]) {
NewReq[i][j] = NewReq[i][j] ? NewReq[i][j]"&"k : k
}
}
}
for (l in NewReq) {
for (m in NewReq[l]) {
print l,m,Cand[l][m],FCount[l][m],NewReq[l][m],reqCl[l][m]
}
}
for (q in Cand) {
for (r in Cand[q]) {
print q,r,Cand[q][r]
}
}
}' file1 file2 file3
В вышеприведенном скрипте это похоже на то, как awk добавляет новые элементы в массивCand, элементы, которых не было до оператора END.
Я получаю другой результат при перестановке цикла for:
...
...
...
END{
for (i in req) {
for (j in req[i]) {
for (k in req[i][j]) {
NewReq[i][j] = NewReq[i][j] ? NewReq[i][j]"&"k : k
}
}
}
for (q in Cand) {
for (r in Cand[q]) {
print q,r,Cand[q][r]
}
}
for (l in NewReq) {
for (m in NewReq[l]) {
print l,m,Cand[l][m],FCount[l][m],NewReq[l][m],reqCl[l][m]
}
}
}' file1 file2 file3