Bash Scripting – String dividida

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *