No se puede construir una matriz y mostrarla en AWK.
Estoy golpeando mi cabeza contra la pared por algo trivial, pero no sé por qué no me permite construir un arreglo leyendo cada fila de un archivo antes de imprimirlo en AIX 6.x.
Employee.txt
1|Sam|Smith|Seatle
2|Barry|Jones|Seatle
3|Garry|Brown|Houston
4|George|Bla|LA
5|Celine|Wood|Atlanta
6|Jody|Ford|Chicago
bash-4.3$ awk 'BEGIN { FS="|" } { employee[$1]=$0; next } { for (index=0; index<=FS; index++) print index ":" employee[index] }' Employee.txt
awk: línea de comando:1: BEGIN { FS="|" } { employee[$1]=$0; next } { for (index=0; index<=FS; index++) print index ":" employee[index] }
awk: línea de comando:1: ^ error de sintaxis
awk: línea de comando:1: error: expresión de subíndice no válida
Obtuve el mismo error utilizando un bucle for diferente.
bash-4.3$ awk 'BEGIN { FS="|" } { employee[$1]=$0 } END { for (index in employee) { print employee[index] } }' Employee.txt
awk: línea de comando:1: BEGIN { FS="|" } { employee[$1]=$0 } END { for (index in employee) { print employee[index] } }
awk: línea de comando:1: ^ error de sintaxis
awk: línea de comando:1: error: expresión de subíndice no válida
davy.ai
Parece que hay un problema con la sintaxis del código. El primer error se debe a que el bucle for intenta comparar el índice con FS, que no es un valor numérico. El valor correcto para compararlo es la longitud del array, que se puede obtener utilizando la función “asort”. El código corregido sería:
El segundo error se debe al uso de “in” en lugar de “asort” o “asorti” para iterar a través del array. El código corregido sería:
Con suerte, estas correcciones ayudarán a resolver el problema y construir el array deseado.