¿Cómo puedo dividir una cadena de texto mediante un delimitador específico dentro de un script de bash?
En mi caso tengo la siguiente cadena de texto almacenada en una variable:
IN="[email protected];[email protected]"
Lo que necesito es dividir la cadena en base al delimitador ;
, de manera que al final tenga estas dos nuevas variables:
ADDR1="[email protected]" ADDR2="[email protected]"
No necesito obligatoriamente crear las variables ADDR1
y ADDR2
variables, ya que me vendría mejor que esta información estuviera almacenada en un array.
Respuestas
La solución más sencilla para dividir la cadena y convertirla en un array sería el siguiente código:
IN="[email protected];[email protected]" arrIN=(${IN//;/ })
Otra posible solución consiste en utilizar la variable IFS
(Internal Field Separator). Al cambiar el valor de esta variable en un comando, los cambios afectan solamente a ese comando, así que no tiene efectos secundarios. El resultado sería:
IFS=';' read -ra ADDR <<< "$IN" for i in "${ADDR[@]}"; do # procesar "$i" done
Una generalización de la solución anterior sería:
while IFS=';' read -ra ADDR; do for i in "${ADDR[@]}"; do # procesar "$i" done done <<< "$IN"
@librosweb