Necesitaría extraer solo las últimas 2 partes de la siguiente ruta del directorio usando el comando Shell
"Android/2.1/Paquetes/prueba/depuración/"
Salida esperada: /test/debug
Esta ruta es la dinámica donde cambiaría con un valor de ruta diferente como tal "Android/2/Pipeline/Packages/test/debug/"
No pude encontrar la expresión regular específica que puede extraer las últimas 2 partes, incluso el resto del valor de la ruta mantiene el cambio, es decir, solo para obtener '/test/debug'
Agradezco si alguien puede ayudar en esto.
Gracias
Respuesta1
Supongo que hay muchos enfoques que podrías probar (reemplazando pwd con algo adecuado para tu caso de uso):
echo /$(basename $(dirname $(pwd)))/$(basename $(pwd))
o
pwd | awk -F/ '{print "/" $(NF-1) "/" $(NF)}'
Y probablemente de muchas otras maneras. . .
Respuesta2
El shell puede hacer esto indirectamente con modificadores de variables %
, %%
y . Estos eliminan la coincidencia inicial o final del patrón dado. Tenga en cuenta que el patrón es un caparazón.#
##
globo, no una expresión regular.
El siguiente ejemplo imprimirá los dos últimos elementos de la ruta, con o sin el final opcional/
$ in="Android/2/Pipeline/Packages/test/debug/"
$ echo $( t=${in%/} && t=${t%/*/*} && echo ${in##$t} )
/test/debug/