Como obter a parte da substring de um diretório com o comando shell

Como obter a parte da substring de um diretório com o comando shell

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/

informação relacionada