Ejemplos de cadenas divididas Bash

Bash Split String Examples



Necesitamos dividir los datos de la cadena para varios propósitos en la programación. Muchos lenguajes de programación tienen una función incorporada llamada 'dividir' para dividir cualquier cadena de datos en varias partes. Pero no hay una función incorporada en bash para dividir la cadena. Normalmente, se utilizan delimitadores únicos o múltiples para dividir cualquier dato de cadena. En este tutorial se muestra cómo puede dividir la cadena en bash utilizando diferentes ejemplos.








Usando la variable $ IFS

La variable de shell especial $ IFS se usa en bash para dividir una cadena en palabras. La variable $ IFS se denomina Separador de campo interno (IFS) y se utiliza para asignar el delimitador específico para dividir la cadena. Los límites de las palabras se identifican en bash mediante $ IFS. El espacio en blanco es el valor delimitador predeterminado para esta variable. Cualquier otro valor como ' t', ' n', '-', etc. Se puede utilizar como delimitador. Después de asignar el valor a la variable $ IFS, el valor de la cadena se puede leer mediante dos opciones. Estos son '-r' y '-a'. La opción '-r' se usa para leer la barra invertida () como un carácter en lugar de un carácter de escape y la opción '-a' se usa para almacenar las palabras divididas en una variable de matriz. La cadena se puede dividir sin usar la variable $ IFS en bash. En los siguientes ejemplos se muestran diferentes formas de dividir datos de cadena (con $ IFS o sin $ IFS).



Ejemplo-1: Cadena dividida basada en

El valor de la cadena se divide por espacio en blanco de forma predeterminada. Cree un archivo llamado 'split1.sh' y agregue el siguiente código. Aquí, la variable $ text se usa para asignar un valor de cadena. La variable de shell, $ IFS, se usa para asignar el carácter que se usará para dividir los datos de la cadena. El espacio se utiliza en este script como separador. La opción '-a' se usa con el comando de lectura para almacenar los datos divididos en una variable de matriz llamada $ strarr. El bucle 'for' se usa para leer cada elemento de la matriz, $ strarr.



split1.sh





#! / bin / bash

# Definir el valor de la cadena
texto='Bienvenido a LinuxHint'

# Establecer espacio como delimitador
IFS=' '

# Lee las palabras divididas en una matriz basada en el delimitador de espacio
leer -astrarr<<< '$ texto'

#Cuenta el total de palabras
echo 'Existen$ {# strarr [*]}palabras en el texto.

# Imprime cada valor de la matriz usando el bucle
porhorasen '$ {strarr [@]}';
hacer
printf '$ horas orte'
hecho

Producción:

Ejecute el script.



$intentosplit1.sh

La siguiente salida aparecerá después de ejecutar el script.

Ejemplo 2: cadena dividida basada en un carácter en particular

Se puede utilizar cualquier carácter específico como separador para dividir el valor de la cadena. Crea un archivo llamado split2.sh y agregue el siguiente código. Aquí, el nombre del libro, el nombre del autor y el valor del precio se toman agregando una coma (,) como una cadena de entrada. A continuación, el valor de la cadena se divide y se almacena en una matriz basada en el valor de la variable de shell, $ IFS. Cada valor de los elementos de la matriz se imprime mediante el valor del índice.

split2.sh

#! / bin / bash

# Lee el valor de la cadena
echo 'Ingrese el nombre del libro, el nombre del autor y el precio separando comas. '
leertexto

# Establecer coma como delimitador
IFS=','

# Lee las palabras divididas en una matriz basada en el delimitador de coma
leer -astrarr<<< '$ texto'

# Imprime las palabras divididas
echo 'Nombre del libro :$ {strarr [0]}'
echo 'Nombre del autor :$ {strarr [1]}'
echo 'Precio :$ {strarr [2]}'

Producción:

Ejecute el script.

$intentosplit2.sh

La siguiente salida aparecerá después de ejecutar el script.

Ejemplo 3: dividir la cadena sin la variable $ IFS

Este ejemplo muestra cómo se puede dividir el valor de la cadena sin usar $ IFS en bash. Cree un archivo llamado ' split3.sh ’ y agregue el siguiente código. Según el guión, un valor de texto con dos puntos (:) tiene que tomar como entrada para dividir. Aquí, el comando 'readarray' con la opción -d se usa para dividir los datos de la cadena. La opción '-d' se usa para definir el carácter separador en el comando como $ IFS. A continuación, se utiliza el bucle 'for' para imprimir los elementos de la matriz.

split3.sh

#! / bin / bash

# Lee la cadena principal
echo 'Ingrese la cadena con dos puntos (:) para dividir'
leermainstr

# Divida la cadena según el delimitador, ':'
readarray-D:-tstrarr<<< '$ mainstr'
printf ' orte'

# Imprime cada valor de la matriz usando loop
por (( norte=0; norte< $ {# strarr [*]}; n ++))
hacer
echo '$ {strarr [n]}'
hecho

Producción:

Ejecute el script.

$intentosplit3.sh

La siguiente salida aparecerá después de ejecutar el script.

Ejemplo 4: dividir la cadena con un delimitador de varios caracteres

El valor de la cadena está dividido por un delimitador de un solo carácter en todos los ejemplos anteriores. En este ejemplo se muestra cómo puede dividir la cadena utilizando delimitadores de varios caracteres. Crea un archivo llamado Times split4.sh y agregue el siguiente código. Aquí, la variable $ text se usa para almacenar datos de cadena. La variable $ delimiter se usa para asignar un dato de varios caracteres que se usa como delimitador en las siguientes declaraciones. La variable $ myarray se usa para almacenar cada dato dividido como un elemento de matriz. Finalmente, todos los datos divididos se imprimen utilizando el bucle 'for'.

split4.sh

#! / bin / bash

# Definir la cadena a dividir
texto='learnHTMLlearnPHPlearnMySQLlearnJavascript'

# Definir delimitador de varios caracteres
delimitador='aprender'
# Concatenar el delimitador con la cadena principal
cuerda=$ texto$ delimiter

#Dividir el texto según el delimitador
myarray=()
tiempo [[ $ cadena ]];hacer
myarray + =( '$ {string %% '$ delimiter' *}' )
cuerda=$ {string # * '$ delimiter'}
hecho

# Imprime las palabras después de la división
porvaloren $ {myarray [@]}
hacer
echo -norte '$ valor'
hecho
printf ' orte'

Producción:

Ejecute el script.

$intentosplit4.sh

La siguiente salida aparecerá después de ejecutar el script.

Conclusión:

Los datos de la cadena deben dividirse para diferentes propósitos de programación. En este tutorial se muestran varias formas de dividir datos de cadenas en bash. Espero que, después de practicar los ejemplos anteriores, los lectores puedan dividir cualquier cadena de datos según sus requisitos.

Para más información ver el video !