Cómo usar el comando readarray para leer un arreglo 2D en Bash

Cómo usar el comando readarray para leer un arreglo 2D en Bash

Bash es un lenguaje de script popularmente utilizado en sistemas Linux/Unix y el cual es ampliamente utilizado para la automatización de tareas y procesos. En este artículo, exploraremos cómo leer matrices 2D en Bash mediante el comando readarray. Este comando nos permite leer datos de una entrada y almacenarlos en un arreglo. En consecuencia, esto hace que el proceso de lectura y almacenamiento de datos sea sencillo y eficiente.

📋 Aquí podrás encontrar✍
  1. ¿Qué es readarray en Bash?
  2. ¿Cómo se utiliza el comando readarray?
  3. Ejemplos de uso de readarray
    1. Leyendo una matriz desde un archivo CSV
    2. Leyendo una matriz desde el resultado de un comando
    3. Leyendo una matriz en Bash desde la entrada del usuario
  4. Conclusión
  5. Preguntas frecuentes
    1. ¿Cómo accedo a las distintas posiciones de la matriz en Bash?
    2. ¿Es posible utilizar el comando readarray en un script de Bash?
    3. ¿Puedo especificar un rango particular de líneas que quiero leer con el comando readarray?
    4. ¿Cómo elimino los caracteres de nueva línea en el comando readarray?

¿Qué es readarray en Bash?

El comando readarray es el encargado de leer una entrada, como archivos o salida de comandos, y almacenar los datos en un arreglo. Se utiliza para leer arreglos y matrices de una entrada y se asignan en un arreglo para su posterior uso en el script. Al utilizar este comando para matrices, se crea automáticamente una matriz 2D en Bash

¿Cómo se utiliza el comando readarray?

La sintaxis del comando readarray es la siguiente:
readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] array

  • -n count: Se usa para especificar el número máximo de líneas a leer.
  • -O origin: Se utiliza para especificar el índice de inicio en el cual se almacenará el contenido.
  • -s count: Se usa para saltar líneas desde la entrada de datos especificado.
  • -t: Se utiliza para eliminar el carácter de nueva línea al final de cada línea.
  • -u fd: Se utiliza para especificar el descriptor de archivo desde el cual se leerán los datos.
  • -C callback: Es una función que se llama para cada línea leída.
  • -c quantum: Especifica el número máximo de caracteres que se permiten leer en una sola llamada de sistema.
  • array: Es el nombre del arreglo donde se almacenarán los elementos de la matriz.

Ahora veamos un ejemplo de cómo utilizar el comando readarray para leer una matriz 2D en Bash.

Supongamos que tenemos el siguiente archivo llamado "datos.txt":

1,2,3
4,5,6
7,8,9

Para leer esta matriz utilizando el comando readarray, lo haríamos de la siguiente manera:

readarray -t matriz < datos.txt

Al usar el flag -t en este ejemplo, eliminaremos el carácter de nueva línea al final de cada línea. El resultado final es que se creará una matriz 2D en Bash a partir de los datos del archivo "datos.txt". Podremos acceder a cada elemento de esta matriz haciendo referencia a las posiciones de fila y columna respectivamente.

Ejemplos de uso de readarray

El comando readarray puede ser utilizado en diversas situaciones, a continuación se presentan algunos ejemplos:

Leyendo una matriz desde un archivo CSV

Supongamos que tenemos el siguiente archivo CSV denominado "datos.csv":

1,2,3
4,5,6
7,8,9

Para leer esta matriz 2D a partir del archivo CSV, lo haríamos de la siguiente manera:

readarray -t matriz < <(cut -d',' -f1-3 datos.csv)

Esto cortará las primeras tres columnas del archivo "datos.csv" y almacenará los datos en una matriz utilizando el comando readarray. Almacenando los datos de manera automatica en la matriz 2D que creara Bash.

Leyendo una matriz desde el resultado de un comando

Supongamos que queremos leer una matriz del resultado de un comando. El siguiente ejemplo mostrará cómo hacerlo para el comando "ls" de Unix:

ls /usr/bin | readarray -t matriz

Este comando primero ejecutará el comando "ls /usr/bin" y, a continuación, almacenará los resultados en una matriz utilizando el comando readarray

Leyendo una matriz en Bash desde la entrada del usuario

También podemos utilizar el comando readarray para leer una matriz desde la entrada del usuario. A continuación se muestra un ejemplo:

echo "Ingrese los datos de la matriz (separe los datos con un espacio): "
readarray matriz

Este código solicitará al usuario que ingrese los datos de la matriz (con separación mediante espacios), que se almacenarán en una matriz utilizando el comando readarray.

Conclusión

En este artículo hemos revisado cómo utilizar el comando readarray para leer una matriz 2D en Bash. Este comando es muy útil, ya que nos permite leer y almacenar fácilmente datos de diversas fuentes en una matriz. Asegúrate de explorar y experimentar con las diferentes opciones y usos que tiene el comando readarray al leer y manipular matrices en Bash.

Preguntas frecuentes

¿Cómo accedo a las distintas posiciones de la matriz en Bash?

Al usar el comando readarray para almacenar una matriz, se creará automáticamente una matriz 2D en Bash. Para acceder a un elemento en particular, se puede hacer referencia a la posición mediante el formato matriz[fila][columna].

¿Es posible utilizar el comando readarray en un script de Bash?

Sí, el comando readarray se puede utilizar en cualquier script de Bash donde se requiera leer y almacenar datos en una matriz.

¿Puedo especificar un rango particular de líneas que quiero leer con el comando readarray?

Sí, al utilizar la opción -n, puedes especificar el número de líneas que quieres leer desde la entrada de datos.

¿Cómo elimino los caracteres de nueva línea en el comando readarray?

El flag -t se utiliza para eliminar el carácter de nueva línea al final de cada línea al leer los elementos de la matriz.
[nekopost slugs="comando-bash-no-encontrado,bash-de-guion-de-ruta-absoluta,use-caracteres-especiales-en-el-comando-grep,dos-propositos-de-comando-de-dev-null,echo-sin-nuevo-personaje-de-linea-bash,ejemplos-de-rizos,no-es-igual-a-la-fiesta,bash-duerme-un-segundo,exportar-una-ruta-en-bashrc"]

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir