Используйте SYMTAB[i][j]
вместо SYMTAB[i,j]
- вы используете синтаксис многомерного массива в циклах для доступа к индексам, поэтому просто продолжайте делать это.
Вот рекурсивная функция для дампа SYMTAB или любого другого массива или скаляра:
$ cat tst.awk
function dump(name,val, i) {
if ( isarray(val) ) {
printf "%*s%s %s%s", indent, "", name, "{", ORS
indent += 3
for (i in val) {
dump(i,val[i])
}
indent -= 3
printf "%*s%s %s%s", indent, "", name, "}", ORS
}
else {
printf "%*s%s = <%s>%s", indent, "", name, val, ORS
}
}
BEGIN {
dump("SYMTAB",SYMTAB)
}
.
$ awk -f tst.awk
SYMTAB {
ARGV {
0 = <awk>
ARGV }
ROUNDMODE = <N>
ORS = <
>
OFS = < >
LINT = <0>
FNR = <0>
ERRNO = <>
NR = <0>
IGNORECASE = <0>
TEXTDOMAIN = <messages>
NF = <0>
ARGIND = <0>
indent = <3>
ARGC = <1>
PROCINFO {
argv {
0 = <awk>
1 = <-f>
2 = <tst.awk>
argv }
group9 = <15>
ppid = <2212>
...
strftime = <%a %b %e %H:%M:%S %Z %Y>
group8 = <11>
PROCINFO }
FIELDWIDTHS = <>
CONVFMT = <%.6g>
SUBSEP = <>
PREC = <53>
ENVIRON {
SHLVL = <1>
ENV = <.env>
...
INFOPATH = </usr/local/info:/usr/share/info:/usr/info>
TEMP = </tmp>
ProgramData = <C:\ProgramData>
ENVIRON }
RS = <
>
FPAT = <[^[:space:]]+>
RT = <>
RLENGTH = <0>
OFMT = <%.6g>
FS = < >
RSTART = <0>
FILENAME = <>
BINMODE = <0>
SYMTAB }
Массаж для костюма ...