Parseo basico de strings en BASH
Ir a la navegación
Ir a la búsqueda
Usando el soporte de expresiones regulares de BASH
Usamos el operador =~ y la variable BASH_REMATCH[]
$ re="^([^-]+)-(.*)$" $ [[ "ABCDE-123456" =~ $re ]] && var1="${BASH_REMATCH[1]}" && var2="${BASH_REMATCH[2]}" $ echo $var1 ABCDE $ echo $var2 123456
Usando pattern substitution de BASH
Si solo son 2 columnas bastaria con esto (el guion es el caracter separador):
$ STR="ABCDE-123456" $ var1=${STR%-*} $ var2=${STR#*-} $ echo $var1 ABCDE $ echo $var2</nowiki> 123456
Usando read
while read HOST IP do echo "host:${HOST} ip:${IP}" done < nombre-fichero-input.txt
Si el separador no son espacios o tabs se puede hacer tambien, cambiando el valor de IFS (Inter Field Separator):
$ IFS=- read var1 var2 <<< ABCDE-123456 $ echo "$var1" ABCDE $ echo "$var2" 123456