Eu precisaria extrair apenas as duas últimas partes do seguinte caminho de diretório usando o comando shell
"Android/2.1/Pacotes/teste/depuração/"
Saída esperada: /test/debug
Este caminho é o dinâmico onde mudaria com um valor de caminho diferente, como "Android/2/Pipeline/Packages/test/debug/"
Não consegui encontrar a expressão regular específica que pode extrair as duas últimas partes, mesmo o restante do valor do caminho continua alterado, ou seja, apenas para obter '/test/debug'
Agradeço se alguém puder ajudar nisso
Obrigado
Responder1
Suponho que existam muitas abordagens que você poderia tentar (substituindo pwd por algo adequado ao seu caso de uso):
echo /$(basename $(dirname $(pwd)))/$(basename $(pwd))
ou
pwd | awk -F/ '{print "/" $(NF-1) "/" $(NF)}'
E provavelmente inúmeras outras maneiras. . .
Responder2
O shell pode fazer isso indiretamente com modificadores de variáveis %
, e . Eles removem a correspondência final ou inicial do padrão fornecido. Observe que o padrão é uma concha%%
#
##
globo, não uma expressão regular.
O exemplo a seguir imprimirá os dois últimos elementos do caminho, com ou sem o final opcional/
$ in="Android/2/Pipeline/Packages/test/debug/"
$ echo $( t=${in%/} && t=${t%/*/*} && echo ${in##$t} )
/test/debug/