쉘 변수가 awk 명령의 일부가되도록 확장하는 해킹 셸 루프 및 잘못된 코딩 방법 또는 숫자 arg 또는 유사한 것으로 하드 코드 된 사전 정의 된 배열을 채우는 함수가 없으면 수행 할 수 없습니다. 그것을 시도조차하지 마십시오.
$ awk -v n=3 '
NR<=n { for (i=1;i<=NF;i++) arrayRow[NR,i] = $i; nf[NR]=NF }
END {
for (i in nf) {
for (j=1; j<=nf[i]; j++) {
print i, j, arrayRow[i,j]
}
}
}
' file
:
$ cat file
a b c
d e
f g h
i j k
l m
$ awk -v n=3 '
NR<=n {arrayRow[NR][1]; split($0,arrayRow[NR]) }
END {
for (i in arrayRow) {
for (j in arrayRow[i]) {
print i, j, arrayRow[i][j]
}
}
}
' file
1 1 a
1 2 b
1 3 c
2 1 d
2 2 e
3 1 f
3 2 g
3 3 h
그렇지 않으면 당신은 어떤 AWK에서 의사 다차원 배열을 사용할 수 있습니다 : 당신이 나 GNU를 얻을 수있는 경우
는 대신 진정한 멀티 차원 배열을 사용한다 awk가 하지만 실제로는 다차원 배열이 필요하지 않습니다. 1 차원을 사용하고 필요할 때 문자열을 새로운 배열로 나눕니다.
gawk가있는 경우 배열 배열을 조사해야합니다. –
아마 다차원 배열을 사용할 수 있습니다. https://www.gnu.org/software/gawk/manual/gawk.html#Multidimensional – kvantour