terminal

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:

${#string}
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

$stringMY=ArrozConSocarrat
$echo ${#stringMY}
16
$echo `expr length $stringMY`
16
Como ejercicio te proponemos que ejecutes los tres comandos del código anterior.

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:

$stringMY=ArrozConSocarrat
$echo `expr index "$stringMY" Con`
7
Como ejercicio te proponemos que ejecutes los tres comandos del código anterior.

3. Extracción de un substring.

Para extraer el substring desde la posición pos del string str utilizaremos el siguiente comando:

${str:pos}

Veamos algunos ejemplos de utilización de este comando:

$stringMY=ArrozConSocarrat
$echo ${stringMY:0}
ArrozConSocarrat
$echo ${stringMY:1}
rrozConSocarrat
$echo ${stringMY:7}
nSocarrat
Como ejercicio te proponemos que ejecutes los tres comandos del código anterior.

Si lo que queremos es extraer un número determinado de caracteres desde una posición concreta utilizaremos el siguiente comando:

${str:pos:len}

El comando anterior extrae el substring desde la posición pos del string str tomando len caracteres.

Ejemplo:

$stringMY=ArrozConSocarrat
$echo ${stringMY:0:5}
Arroz
$echo ${stringMY:1:5}
rrozC
$echo ${stringMY:7:5}
nSoca

También funcionaría el siguiente comando:

expr substr $string $posicion $length

Veamos un ejemplo de utilización de este comando:

$stringMY=ArrozConSocarrat
$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:

${str#substr}

El comando anterior elimina el match/coincidencia mas corto que encuentre del substr en str. Haciendo el match del inicio al final.

Ejemplo:

$stringMY=abcABC123ABCabc
$echo ${stringMY#a*C}
123ABCabc

Daría como resultado

Nota: Observa cómo el * se utiliza como comodín (cualquier caracter).

${str##substr}

El comando anterior elimina el match mas largo que encuentre del substr en str. Haciendo el match del inicio al final.

Ejemplo:

$stringMY=abcABC123ABCabc
$echo ${stringMY#a*C}
abc
${str%substr}

El comando anterior elimina el match mas corto que encuentre del substr en str. Haciendo el match del final al inicio.

Ejemplo:

$stringMY=abcABC123ABCabc
$echo ${stringMY%b*c}
abcABC123ABCa
${str%%substr}

El comando anterior elimina el match mas largo que encuentre del substr en str. Haciendo el match del inicio al final.

Ejemplo:

$stringMY=abcABC123ABCabc
$echo ${stringMY#b*c}
a

5. Reemplazo de un substring.

${str/substr/reemplazo}
El comando anterior reemplaza el primer match de la subcadena substr con la cadena reemplazo. Haciendo el match del inicio al final.

Ejemplo:

$stringMY=abcABC123ABCabc
$echo ${stringMY/abc/xyz}
xyzABC123ABCabc
${str//substr/reemplazo}

El comando anterior reemplaza todos los matches de la subcadena substr con la cadena reemplazo.

Ejemplo:

$stringMY=abcABC123ABCabc
$echo ${stringMY//abc/xyz}
xyzABC123ABCxyz
${str/#substr/reempl}

Si la cadena substr hace match con los primeros caracteres del string str, hace el reemplazo de substr con la cadena reempl.

Ejemplo:

$stringMY=abcABC123ABCabc
$echo ${stringMY/#abc/XYZ}
XYZABC123ABCabc
${str/%substr/reempl}

Si la cadena substr hace match con los últimos caracteres del string str, hace el reemplazo de substr con reempl.

Ejemplo:

$stringMY=abcABC123ABCabc
$echo ${stringMY/%abc/XYZ}
abcABC123ABCXYZ

2 thoughts on “Aprende shell script con ejemplos (VIII)

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.