Comando MAPFILE BASH LINUX

Comando MAPFILE BASH LINUX
El comando Bash Shell MapFile a menudo se conoce como una matriz de lectura. El propósito principal es leer las líneas de entrada estándar y almacenarlas en una variable de matriz indexada. Mapfile también debe leer de sustitución (<<) rather than a pipe. In addition, as compared to a read loop, bash Mapfile is a much faster and more convenient solution. It returns 1 if the execution of the command gets successful and 0 in case it is not successful. If we don't specify an array name, the bash Mapfile variable will be targeting the array variable by default. Thus, we have decided to cover some examples using the mapfile instruction on the bash.

El comando touch se usa para crear, cambiar y editar marcas de tiempo en los archivos en el sistema operativo Unix/Linux. Entonces, como se muestra en la imagen, hemos probado la instrucción de "tocar" dentro de nuestro shell para crear un nuevo archivo de texto. GNU Nano es un editor básico de línea de comandos incorporado para sistemas operativos UNIX/Linux. Escriba "nano" después del símbolo $, seguido del nombre del archivo para abrir o crear un nuevo archivo.

$ touch nuevo.TXT
$ nano nuevo.TXT

Ejemplo 1: Leer desde el archivo como matriz

El comando "nano" en el shell abre el "nuevo.Txt "archivo en el editor" nano ". Hemos escrito el texto uno, dos y tres en el archivo de texto en tres líneas separadas como se muestra. Guarde este archivo de datos de texto simple a través del Ctrl+S y cierre el editor "nano" a través del atajo CTRL+X.

Es hora de usar la instrucción MAPFILE para leer los datos de texto recién agregados en un formulario de matriz. Las líneas de texto en el nuevo.El archivo txt se almacenan como elementos de matriz en la variable "var" utilizando el comando mapfile. En la segunda línea, la consulta de eco se usa para imprimir todos los datos en cada índice de una matriz almacenada en la variable "var" en un formato de matriz. Del mismo modo, las siguientes líneas de códigos de instrucción "Echo" se utilizan para mostrar datos en un índice específico, i.mi., 0,1,2,3 de una matriz por separado. Como la matriz contiene solo 3 valores, por lo tanto, el resultado del índice 3 no devuelve nada.

$ mapfile var < new.txt
$ echo $ var [@]
$ echo $ var [0]
$ echo $ var [1]
$ echo $ var [2]
$ echo $ var [3]

Ejemplo 2: Leer datos de salida en una matriz

También podemos utilizar algunos datos de la declaración de salida desde una instrucción BASH a la matriz utilizando la instrucción MAPFILE. Hemos estado utilizando la instrucción printf para obtener sus datos de salida en una matriz "ARR."Tres valores," Ana "," Paul "y" George ", separados por el personaje especial de Line Break" \ n "se almacenará utilizando la instrucción MAPFILE. Después de eso, el primer comando echo se usa para mostrar todos los datos en una matriz. Los datos que ocurren en cada índice de una matriz "ARR" se muestran de manera similar en las siguientes líneas de código a través de la instrucción "Echo" seguido de los números de índice en los soportes cuadrados. Debido a que no hay datos sobre el tercer índice de una matriz, no se muestra ninguna salida en la pantalla. Avancemos hacia el siguiente ejemplo.

$ mapfile arr < <(printf “Ana \nPaul \n George\n”)
$ echo $ var [@]
$ echo $ var [0]
$ echo $ var [1]
$ echo $ var [2]
$ echo $ var [3]
$ echo $ var [0]

Ejemplo 03: Opción MAPFILE -N

El comando del archivo de mapa tiene opciones incorporadas para la ejecución. El -N se ha utilizado para especificar el número de valores del archivo de datos a tomar como entrada para una matriz. Todas las líneas deben copiarse en una matriz cuando el valor de n es cero. La primera línea en el siguiente ejemplo usa el comando de archivo de mapa con la opción -n establecida en 2. Esto significa que leerá las dos primeras líneas del archivo en una matriz llamada "var" como valores de índice para una matriz.

El comando echo muestra datos sobre todos los índices de la matriz "var", i.mi., 2 índices, lo que implica que el comando de archivo de mapa copia las dos primeras líneas del archivo con la opción -n. El uso de la opción "-n" con el valor 1 en la instrucción MAPFILE solo leerá una sola línea desde el archivo, como se muestra a continuación.

$ mapfile -n var < new.txt
$ echo $ var [@]
$ mapfile -n 1 var < new.txt
$ echo $ var [@]

Ejemplo 04: opción MAPFILE -T

La opción "-t" se usa para quitar/eliminar nuevas líneas de un elemento almacenándolo en una matriz. El siguiente ejemplo muestra la ejecución práctica de comando -t. El operador de sustitución (<) is used to populate the data into an array named “Arr.” The Mapfile instruction receives standard input strings, i.e., “Ana,” “Paul,” and “George,” from the printf statement and appends newlines (-t) to each line. When we run the entire command, mapfile silently scans the text lines and places each line into its specific array variable. The use of the printf statement is simply showing us that the string elements have been considered as array elements while “\n” has been used to give the line break in the shell.

$ mapfile -t arr< <(printf “Ana \nPaul \nGeorge\n”)
$ printf "%s \ n" "$ arr [@]"

Los ejemplos a continuación muestran cómo imprimir los elementos individuales de una matriz utilizando índices.

$ printf "%s \ n" "$ arr [0]"
$ printf "%s \ n" "$ arr [1]"
$ printf "%s \ n" "$ arr [2]"
$ printf "%s \ n" "$ arr [3]"

En el siguiente ejemplo, el comando ECHO imprime todos los elementos de la variable de matriz MAPFILE, separados por un espacio.

$ printf "ana \ npaul \ ngeorge \ n" | (mapfile; echo "$ mapfile [@]")

Podemos solucionarlo y eliminar los descansos de línea utilizando la opción -t de la instrucción MAPFILE.

$ printf "ana \ npaul \ ngeorge \ n" | (mapfile -t; echo "$ mapfile [@]")

Conclusión

Este artículo se trataba de la utilización de la instrucción Bash MapFile en el Ubuntu 20.04 Sistema para tomar cualquier datos de texto de entrada de una matriz dentro de alguna variable y mostrarlos de acuerdo con eso. Hemos probado la instrucción MAPFILE con opciones "-n" y "-t" para obtener un formato diferente de salidas para matrices en el shell bash.