Eliminar la coincidencia de subcadena más corta de una cadena en bash | Algo de Linux

miércoles, 3 de junio de 2015

Eliminar la coincidencia de subcadena más corta de una cadena en bash

Cuando utilizamos un signo dólar seguido de un nombre de variable en Bash, el shell sustituye el nombre de la variable por su valor. A esta característica se le llama expansión de parámetros.

La expansión de parámetros, nos permite manipular cadenas. En este post vamos a ver cómo eliminar la subcadena más corta en una cadena.

Para eliminar la coincidencia de subcadena más corta buscando desde el principio de una cadena, utilizaremos lo siguiente:
${cadena#subcadena}
Para eliminar la coindencia de subcadena más corta buscando desde el final de una cadena, utilizaremos lo siguiente:
${cadena%subcadena}

Un ejemplo: Supongamos que tengo una variable con el siguiente valor:
impresora="EPSON-EPL5900-1234"
Y esta variable representa el nombre de la impresora: "EPSON-EPL5900" junto con el número de trabajo en el spool "1234".

Si quisiera quedarme con el valor "EPL5900-1234" eliminando "EPSON", podría hacerlo de la siguiente manera:
# echo ${impresora#*-}

EPL5900-1234

Y si lo que quisiera fuera quedarme tan sólo con el nombre de la impresora "EPL5900-1234" eliminando "EPSON", podría hacerlo de la siguiente manera:
# echo ${impresora%-*}

EPSON-EPL5900
Es algo realmente sencillo y potente a la vez.
Publicado por primera vez en http://enavas.blogspot.com.es