Aprende shell script con ejemplos (VIII)
En este artículo vamos a ver cómo se trabaja con cadenas de caracteres dentro de shell script.
1. Longitud de un string.
Para conocer la longitud de un string tenemos tres opciones:
expr length $string
expr “$string” : ‘.*’
Las opciones más utilizadas son las dos primeras mientras que la tercera además de no ser muy intuitiva tampoco es muy utilizada por los programadores de shell script.
Veamos un ejemplo de utilización de estas funciones
$echo ${#stringMY}
16
$echo `expr length $stringMY`
16
2. Averiguando la posición numérica de un substring en un string.
Para averiguar dicha posición utilizaremos el parámetro index del comando expr. Veamos un ejemplo de utilización de dicho comando:
$echo `expr index "$stringMY" Con`
7
3. Extracción de un substring.
Para extraer el substring desde la posición pos del string str utilizaremos el siguiente comando:
Veamos algunos ejemplos de utilización de este comando:
$echo ${stringMY:0}
ArrozConSocarrat
$echo ${stringMY:1}
rrozConSocarrat
$echo ${stringMY:7}
nSocarrat
Si lo que queremos es extraer un número determinado de caracteres desde una posición concreta utilizaremos el siguiente comando:
El comando anterior extrae el substring desde la posición pos del string str tomando len caracteres.
Ejemplo:
$echo ${stringMY:0:5}
Arroz
$echo ${stringMY:1:5}
rrozC
$echo ${stringMY:7:5}
nSoca
También funcionaría el siguiente comando:
Veamos un ejemplo de utilización de este comando:
$echo `expr substr $stringZ 4 3`
ozC
4. Borrado de un substring.
Veamos uno a uno las distintas posibilidades que tenemos de borrar un substring dentro de un string:
El comando anterior elimina el match/coincidencia mas corto que encuentre del substr en str. Haciendo el match del inicio al final.
Ejemplo:
$echo ${stringMY#a*C}
123ABCabc
Daría como resultado
Nota: Observa cómo el * se utiliza como comodín (cualquier caracter).
El comando anterior elimina el match mas largo que encuentre del substr en str. Haciendo el match del inicio al final.
Ejemplo:
$echo ${stringMY#a*C}
abc
El comando anterior elimina el match mas corto que encuentre del substr en str. Haciendo el match del final al inicio.
Ejemplo:
$echo ${stringMY%b*c}
abcABC123ABCa
El comando anterior elimina el match mas largo que encuentre del substr en str. Haciendo el match del inicio al final.
Ejemplo:
$echo ${stringMY#b*c}
a
5. Reemplazo de un substring.
El comando anterior reemplaza el primer match de la subcadena substr con la cadena reemplazo. Haciendo el match del inicio al final.
Ejemplo:
$echo ${stringMY/abc/xyz}
xyzABC123ABCabc
El comando anterior reemplaza todos los matches de la subcadena substr con la cadena reemplazo.
Ejemplo:
$echo ${stringMY//abc/xyz}
xyzABC123ABCxyz
Si la cadena substr hace match con los primeros caracteres del string str, hace el reemplazo de substr con la cadena reempl.
Ejemplo:
$echo ${stringMY/#abc/XYZ}
XYZABC123ABCabc
Si la cadena substr hace match con los últimos caracteres del string str, hace el reemplazo de substr con reempl.
Ejemplo:
$echo ${stringMY/%abc/XYZ}
abcABC123ABCXYZ
Es la publicacion mas generosa que he visto sobre los Bash de Android.
Agradecido y Felicito a todo el equipo.