Bash Split String en una matriz

Bash Split String en una matriz
Puede encontrarse en muchas situaciones en las que tiene que dividir los valores de las cadenas en matrices u otras estructuras de datos mientras trabaja en un script bash en un sistema Linux. Aquí, debe borrar que Bash no nos proporciona la función dividida incorporada para dividir cualquier cadena. Pero siempre hay una alternativa a tales problemas. Por lo tanto, usaremos los delimitadores para convertir o dividir algunas cadenas en una matriz. Comencemos a ver algunos ejemplos dentro de Ubuntu 20.04. Abra el terminal de carcasa primero usando el "Ctrl+Alt+T" en el escritorio.

Ejemplo 01

Hemos declarado una variable "str" ​​en el shell con un valor de cadena. Aquí, utilizamos la variable "IFS" como delimitador para dividir una cadena "STR". El delimitador "IFS" contiene "espacio" como su valor. Esto significa que la cadena se dividirá en una matriz utilizando el espacio entre sus valores. Ahora, el bucle "para" se usa aquí para iterar la cadena "str". Dentro de la cláusula "hacer", cada elemento de una variable "STR" se mostrará como una matriz. Después de que termina el bucle, el terminal muestra la cadena en forma de matriz según la imagen a continuación.

Ejemplo 02

Tengamos otro ejemplo para obtener una salida un poco diferente. Puede ver claramente que la cadena contiene "," carácter después de cada palabra en ella. Este personaje especial se utilizará como delimitador. Entonces, hemos declarado "" como un valor para la variable "IFS".

] El bucle "para" se ha inicializado aquí nuevamente para iterar la variable de cadena "STR". Dentro de la cláusula "do" del bucle "para", la instrucción ECHO se ha utilizado para mostrar cada palabra por separado con el número de índice separado por el valor variable "ifs". Después de que termina el bucle, el programa muestra cada palabra de cadena por separado en forma de una matriz. El personaje ", es responsable de este tipo de división entre los valores de las cadenas. Como resultado, tenemos 5 valores en forma de una matriz de una sola variable de cadena "STR".

Ejemplo 03

Tengamos otro ejemplo de dividir una cadena en una matriz dentro del archivo bash. Entonces, debe crear un archivo bash "prueba.sh ”con una consulta táctil en la carcasa, como se menciona a continuación.

Prueba de $ touch.mierda

Ahora, abra el archivo recién creado en un editor para escribir un script bash en él. Hemos estado utilizando el editor "GNU Nano" para este propósito. También puede utilizar el editor VIM.

$ nano prueba.mierda

Dentro del archivo bash, primero hemos agregado la extensión de bash para que este código se ejecute con el comando bash en el shell. Después de eso, se ha declarado e inicializado una variable "STR" con un valor de cadena largo. La variable "IFS" ha sido declarada y asignada con un valor "espacio". La declaración de lectura se ha utilizado aquí para leer los datos de una variable de cadena "STR" como una matriz con la ayuda del indicador "-RA" y guardado en la nueva variable "ARR".

La instrucción ECHO calcula y muestra el tamaño de una variable "ARR", yo.mi., formación. El bucle "para" está aquí para iterar los valores de los valores de matriz, i.mi., "ARR" en una secuencia y se muestra dentro del shell utilizando la instrucción Printf. El programa termina aquí. Guarde su código con el "Ctrl+S" y abandone el editor usando el atajo "Ctrl+X".

Ejecute su script bash recién creado con el comando bash junto con el nombre de un archivo bash, yo.mi., "prueba.mierda. La ejecución del script bash muestra primero el tamaño de una cadena "str" ​​i.mi., Formación. Después de eso, el terminal mostró los valores de una variable de cadena en forma de matriz, I.mi., Cada palabra separada. Se han mostrado un total de 9 palabras en la carcasa, como se muestra a continuación.

Prueba de $ bash.mierda

Ejemplo 04

Hagamos otra ilustración para dividir una cadena en una matriz. Por lo tanto, abra el mismo archivo de código y actualice la variable de cadena "STR". Hemos agregado 6 palabras en la cadena separada por una coma. Esta coma se utilizará como delimitador en la variable "IFS". La declaración de lectura ha estado leyendo las palabras de una cadena "str" ​​como una matriz por separado y guardando cada una de ellas en una variable "arr". El delimitador funciona aquí y separa cada palabra de una cadena.

Las declaraciones de 6 eco se han utilizado aquí para mostrar cada valor de la variable "ARR" utilizando los índices de palabras. Puede ver la sintaxis para tomar cada valor por índice en la imagen mostrada.

Después de ejecutar el código en el shell con la ayuda de una consulta bash, tenemos 6 líneas de salida. Cada palabra de una cadena se guarda por separado en la variable de matriz "arr" y se muestra con la ayuda de índices.

Prueba de $ bash.mierda

Ejemplo 05

Tengamos nuestro último ejemplo de dividir un valor de cadena en una matriz. Esta vez, no estamos usando la variable "IFS" como delimitador para dividir una cadena. Usaremos la bandera "tr" para hacerlo. Entonces, abra el archivo "prueba.sh ”en un editor nano para actualizarlo. Agregue la extensión de Bash en la primera línea.

La variable de tipo de cadena "STR" se ha inicializado. Otra variable, "ARR" ha estado utilizando el valor "STR" variable y dividiéndolo en partes utilizando el indicador "TR". El delimitador "tr" contiene espacio como su valor. El bucle "para" está iterando los valores variables "ARR" con la ayuda de los índices. Cada valor se mostrará por separado en forma de una matriz.

Después de ejecutar el código bash, tenemos el resultado en un formulario de matriz. Cada palabra en una cadena "str" ​​se separa y se convierte en un valor independiente, yo.mi., Elemento de matriz.

Prueba de $ bash.mierda

Conclusión

En este artículo, hemos discutido varios ejemplos para dividir un valor de cadena en una matriz. Para este propósito, hemos utilizado los métodos de delimitador "IFS" y "TR". Todos los ejemplos son bastante fáciles de entender y se pueden implementar sin ningún problema.