En este artículo, discutiremos cómo dividir strings en un script bash.
La división de una sola string en varias strings se denomina división de strings. Muchos lenguajes de programación tienen una función incorporada para realizar la división de strings, pero bash no tiene una función incorporada para hacerlo. Hay varios métodos para realizar una string dividida en bash. Veamos todos los métodos uno por uno con ejemplos.
Método 1: Usando la variable IFS
$IFS(Separador de campo interno) es una variable de shell especial. Se utiliza para asignar el delimitador (una secuencia de uno o más caracteres en función de la cual queremos dividir la string). Cualquier valor o carácter como ‘\t’, ‘\n’, ‘-‘, etc. puede ser el delimitador. Después de asignar el valor a la variable $IFS, se debe leer el valor de la string. Podemos leer strings usando las opciones ‘-r’ y ‘-a’.
- ‘-r’: lee la barra invertida (\) como un carácter en lugar de un carácter de escape
- ‘-a’: se utiliza para almacenar las palabras divididas en una variable de array que se declara después de la opción -a.
Ejemplo 1: dividir la string por espacio
Código:
#!/bin/bash # String text="Welcome to GeeksforGeeks" # Set space as the delimiter IFS=' ' # Read the split words into an array # based on space delimiter read -ra newarr <<< "$text" # Print each value of the array by using # the loop for val in "${newarr[@]}"; do echo "$val" done
Producción:
Welcome to GeeksforGeeks
Ejemplo 2: string dividida por un símbolo
String dividida usando el símbolo @.
Código:
#!/bin/bash #String text="Welcome@to@GeeksforGeeks@!!" # Set @ as the delimiter IFS='@' # Read the split words into an array # based on space delimiter read -ra newarr <<< "$text" # Print each value of the array by # using the loop for val in "${newarr[@]}"; do echo "$val" done
Producción:
Welcome to GeeksforGeeks !!
Método 2: Sin usar la variable IFS
En este método, el comando readarray con la opción -d se usa para dividir los datos de la string. ‘-d’: esta opción actúa como una variable IFS para definir el delimitador.
Ejemplo 1: string dividida por espacio
Código:
#!/bin/bash # Read the main string text="Welcome to GeeksforGeeks" # Split the string by space readarray -d " " -t strarr <<< "$text" # Print each value of the array by # using loop for (( n=0; n < ${#strarr[*]}; n++)) do echo "${strarr[n]}" done
Producción:
Welcome to GeeksforGeeks
Ejemplo 2: dividir usando dos puntos como delimitador
Código:
#!/bin/bash # Read the main string text="Welcome:to:GeeksforGeeks" # Split the string based on the delimiter, ':' readarray -d : -t strarr <<< "$text" # Print each value of the array by using # loop for (( n=0; n < ${#strarr[*]}; n++)) do echo "${strarr[n]}" done
Producción:
Welcome to GeeksforGeeks
Método 3: dividir la string con un delimitador de varios caracteres
En este método, se utiliza una variable para almacenar datos de string y otra variable para almacenar datos delimitadores de varios caracteres. También se declara una variable de array para almacenar la string dividida.
Código:
# Define the string to split text="HelloRomy HelloPushkar HelloNikhil HelloRinkle" # store multi-character delimiter delimiter="Hello" # Concatenate the delimiter with the # main string string=$text$delimiter # Split the text based on the delimiter newarray=() while [[ $string ]]; do newarray+=( "${string%%"$delimiter"*}" ) string=${string#*"$delimiter"} done # Print the words after the split for value in ${newarray[@]} do echo "$value " done
Producción:
Romy Pushkar Nikhil Rinkle
Publicación traducida automáticamente
Artículo escrito por romy421kumari y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA