Otras operaciones con variables

Ciertas shell propporcionan unas facilidades que pueden ser útiles para ahorrar código en la programación de guiones de shell, como son la eliminación o extracción de subcadenas de una variable.

Subcadenas de una variable

${variable:inicio:longitud}
              

Extrae una subcadena de variable, partiendo de inicio y de tamaño indicado por longitud. Si se omite longitud toma hasta el fin de la cadena original.

$ A=abcdef
$ echo ${A:3:2}
de
$ echo ${A:1:4}
bcde
$ echo ${A:2}
cdef
              

Cortar texto al principio de una variable

${variable#texto}
              

Corta texto de variable si variable comienza por texto. Si variable no comienza por texto variable se usa inalterada. El siguiente ejemplo muestra el mecanismo de funcionamiento:

$ A=abcdef
$ echo ${A#ab}
cdef
$ echo ${A#$B}
cdef
$ B=abc
$ echo ${A#$B}
def
$ echo ${A#cd}
abcdef
              

Cortar texto al final de una variable

${variable%texto}
              

Corta texto de variable si variable termina por texto. Si variable no termina por texto variable se usa inalterada.

Vemos un ejemplo:

$ PS1=$
$PS1="$ "
$ A=abcdef
$ echo ${A%def}
abc
$ B=cdef
$ echo ${A%$B}
ab
              

Reemplazar texto en una variable

${variable/texto1/texto2}
${variable//texto1/texto2}
              

Sustituye texto1 por texto2 en variable. En la primera forma, sólo se reemplaza la primera aparición. La segunda forma hace que se sustituyan todas las apariciones de texto1 por texto2.

$ A=abcdef
$ echo ${A/abc/x}
xdef
$ echo ${A/de/x}
abcxf