Tengo el array REGISTROS donde cada elemento es una cadena con 7 campos concatenados por ";" , el caso es que he intentado de varias maneras extraer los campos que me interesan pero la variable CAMPOS por lo que sea no es tratada como array.
for X in ${REGISTROS[*]} do CAMPOS=${X//;/" "} #Quitamos el separador ; por un espacio en blanco echo ${CAMPOS[1]}
done
Para que os hagáis una idea un elemento de REGISTRO es del formato: "2011/10/05;OK;BC;40M;Parcial;08:00;09:00" .
He probado a cambiar IFS dentro del array de modo que considera al ; el separador por defecto,,, y es verdad que en dicho caso puedo recorrer el array CAMPOS, pero no acceder a un campo en concreto como ${CAMPOS[1]}.
for X in ${REGISTROS[*]} do IFS_OLD=$IFS IFS=";" echo "La fecha es ${X[1]}." IFS=$IFS_OLD done
Mi objetivo es poder seleccionar sólo un campo dentro de cada elemento en REGISTROS, lo he conseguido haciendo uso de cut pero mi idea es hacerlo de una manera mas elegante usando los recursos de las variables en BASH.
Tengo el array REGISTROS donde cada elemento es una cadena con 7 campos concatenados por ";" , el caso es que he intentado de varias maneras extraer los campos que me interesan pero la variable CAMPOS por lo que sea no es tratada como array.
for X in ${REGISTROS[*]}do
CAMPOS=${X//;/" "} #Quitamos el separador ; por un espacio en blanco
echo ${CAMPOS[1]}
done
Para que os hagáis una idea un elemento de REGISTRO es del formato: "2011/10/05;OK;BC;40M;Parcial;08:00;09:00" .
He probado a cambiar IFS dentro del array de modo que considera al ; el separador por defecto,,, y es verdad que en dicho caso puedo recorrer el array CAMPOS, pero no acceder a un campo en concreto como
${CAMPOS[1]}.for X in ${REGISTROS[*]}do
IFS_OLD=$IFS
IFS=";"
echo "La fecha es ${X[1]}."
IFS=$IFS_OLD
done
Mi objetivo es poder seleccionar sólo un campo dentro de cada elemento en REGISTROS, lo he conseguido haciendo uso de cut pero mi idea es hacerlo de una manera mas elegante usando los recursos de las variables en BASH.