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