Я хотел бы преобразовать 2D-массив в многомерный массив с 'awk', например
1 2 3 4 5 6 ...
2 4 5 3 6 7 ...
5 3 2 4 5 1 ...
3 5 2 5 5 1 ...
.
.
в
Array[1]
3 6 ...
2 5 ...
1 4 ...
Array[2]
5 7 ...
4 6 ...
2 3 ...
.
.
Array[n]
Я пробовал разные способы, но яЯ даже не близко к решению.Посоветуйте, пожалуйста, как этого добиться ...
Далее я начал с 2D-массива и преобразовал его под свои нужды ... как
'BEGIN {
for (x = 0; ++x <= 5;)
for (y = 0; ++y <= 5;)
A[x][y] = "element:" FS x FS y
for (i in A) {
split(i, t, SUBSEP)
print A[t[1], t[2]]
}
}'
Но это только для 2D... Тем не менее, я смог улучшить свой ответ, так как в этой публикации с помощью
awk '
{
for (i=1; i<=NF; i++) {
a[NR,i] = $i
}
}
NF>p { p = NF }
END {
for(j=1; j<=p; j++) {
str=a[1,j]
for(i=2; i<=NR; i++) {
str=str" "a[i,j];
}
print str
}
}' f3a.dat > f4.dat ## Transpose
# Loop for all columns
awk '{print $1}' f4.dat > f5.dat ## take out a column prior transformation into array
awk 'ORS=NR%3?FS:RS' f5.dat > f6.dat ## putting column into array::3=number of elements in row
awk '
{
for (i=1; i<=NF; i++) {
a[NR,i] = $i
}
}
NF>p { p = NF }
END {
for(j=1; j<=p; j++) {
str=a[1,j]
for(i=2; i<=NR; i++) {
str=str" "a[i,j];
}
print str
}
}' f6.dat > f7.dat ## transpose
tac f7.dat > f8.dat ## reverse line order [UNIX command]
я воспроизводил массив [1], но он неэффективен, поскольку мой реальный массив для преобразования равен [72x100000].
Как преобразовать вышеперечисленное в основной цикл И каждый псевдофайл f8.dat напрямую попадает в многомерный массив?