Cómo desea elegir qué eliminar y qué conservar no está nada claro. Esta es una de las muchas formas de obtener el resultado que solicita:
$ sea=xyz-ajay-no-siddhart-ubidone-fdh-DMJK.UK.1.0-32133-Z-1.tgz
$ sea2=${sea/*[[:lower:]]-/}; echo ${sea2%.*}
DMJK.UK.1.0-32133-Z-1
Alternativamente, esto incluye las partes que comienzan con DMJK
y dejan la final .tgz
:
$ sea2=${sea/*DMJK/DMJK}; echo ${sea2%.tgz}
DMJK.UK.1.0-32133-Z-1
Este mismo enfoque funciona incluso si .tgz
no está presente:
$ sea=xyz-ajay-no-siddhart-ubidone-fdh-DMJK.UK.1.0-32133-Z-1
$ sea2=${sea/*DMJK/DMJK}; echo ${sea2%.tgz}
DMJK.UK.1.0-32133-Z-1
DMJK
y también elimina la final.tgz
.¿Cómo estás determinando qué personajes extraer? Si los caracteres siempre aparecen en lugares específicos en la cadena, por ejemplo, si es una cadena de longitud fija o los caracteres que necesita son los últimos 21 caracteres antes de una extensión de punto y 3 caracteres, puede usar uno de los siguientes en un script Bash:
fuente
Depende del aspecto de su variable en otros casos.
Podría ser tan simple como:
o
fuente