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

miércoles, 3 de junio de 2015

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

Como os mostré esta mañana, es muy fácil eliminar la coincidencia de subcadena más corta de una cadena en bash. Puesto que es igual de sencillo, en este post vamos a ver cómo eliminar la subcadena más larga en una cadena.

Para eliminar la coincidencia de subcadena más larga buscando desde el principio de una cadena, utilizaremos la siguiente sintaxis:
${cadena##subcadena}
Así mismo, para eliminar la coindencia de subcadena más larga buscando desde el final de una cadena, utilizaremos lo siguiente:
${cadena%%subcadena}

Siguiendo con el ejemplo del anterior post: 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 tan sólo con el identificador del trabajo "1234" eliminando "EPSON-EPL5900", podría hacerlo de la siguiente manera:
# echo ${impresora##*-}

1234

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

EPSON
Publicado por primera vez en http://enavas.blogspot.com.es