Cómo usar el comando Readarray para leer la matriz 2D en Bash

Cómo usar el comando Readarray para leer la matriz 2D en Bash

Bash es un lenguaje de script de shell popular utilizado en los sistemas operativos de Linux y Unix. Proporciona un rico conjunto de comandos y características que facilitan automatizar tareas repetitivas. El 'ReadArray' es uno de los comandos más útiles en Bash. Con este comando, las líneas de un archivo se pueden leer en una matriz 2D. En esta publicación, repasaremos cómo leer las líneas de un archivo en una matriz 2D usando el comando "ReadArray" de Bash.

Usar 'Readarray' en Bash

El comando 'ReadArray' lee líneas de un archivo o entrada estándar y las asigna a una matriz. La sintaxis para usar 'ReadArray' es la siguiente:

ReadArray [-d delim] [-n Count] [-o Origin] [-s Count] [-t] matriz


Las opciones disponibles para el comando 'ReadArray' son:

'-d Delim': Establece el delimitador para usar al dividir las líneas en elementos de matriz y, de manera predeterminada, el delimitador es un carácter nuevo.

'-n cuenta': Especifica el número máximo de líneas para leer en la matriz.

'-O Origen': Establece el índice inicial de la matriz.

'-s cuenta': Especifica el número de líneas para omitir antes de leer en la matriz.

'-t': Elimina el personaje de Newline de cada línea leído en la matriz.

Aquí hay un ejemplo de usar 'ReadArray' para leer líneas de un archivo en una matriz 2D y para eso he creado un archivo de prueba.TXT cuyos contenidos son:

1 2 3
4 5 6
7 8 9


Así que aquí está el script Bash completo que demuestra el uso del comando 'ReadArray':

#!/bin/bash
# Lea las líneas de un archivo en la matriz
ReadArray -T líneas < testfile.txt
# Declarar una matriz 2D con 3 filas y 3 columnas
Declarar -A Array
# Iterar sobre las líneas y dividir cada línea en elementos
para i en "$ !líneas [@] "; hacer
Ifs = "leer -r -a elementos <<< "$lines[i]"
para j en "$ !Elementos [@] "; hacer
if [[-n "$ Elements [j]"]]; entonces
matriz [$ i, $ j] = $ elements [j]
FI
hecho
hecho
# Imprimir la matriz
para ((i = 0; i<3;i++)); do
para ((j = 0; j<3;j++)); do
echo -n "$ matriz [$ i, $ j]"
hecho
eco
hecho


Aquí primero he declarado una matriz 2D llamada 'matriz' y luego utilicé el comando 'ReadArray' para leer líneas de un archivo llamado 'TestFile.txt 'en la matriz de' líneas '. A continuación, el código itera sobre la matriz de 'líneas' y divide cada línea en elementos utilizando los comandos 'ifs' y 'leer'.

Después de eso, almacena los elementos en la 'matriz' de matriz 2D y luego usa el comando de lectura para dividir cada línea en elementos. Ahora cada elemento se asigna al elemento correspondiente en la matriz 'matriz' y finalmente, se imprimen el contenido de la matriz 'matriz' usando bucles anidados para bucles.

Conclusión

El comando 'ReadArray' facilita la manipulación de grandes cantidades de datos en scripts bash. Siguiendo los ejemplos proporcionados en este artículo, puede comenzar a usar 'ReadArray' en sus propios scripts bash para leer líneas de los archivos y procesarlos en matrices 2D.