如何使用shell指令從目錄中取得子字串部分

如何使用shell指令從目錄中取得子字串部分

我需要使用 shell 命令從以下目錄路徑中提取最後 2 部分

“Android/2.1/Packages/測試/調試/”

預期輸出:/test/debug

該路徑是動態的,它會​​隨著不同的路徑值而變化,例如“Android/2/Pipeline/Packages/test/debug/”

我找不到可以提取最後兩部分的特定正則表達式,即使路徑值的其餘部分不斷變化,即只能得到“/test/debug”

感謝任何人可以提供幫助

謝謝

答案1

我想有很多方法,你可以嘗試(用適合你的用例的東西替換 pwd ):

echo /$(basename $(dirname $(pwd)))/$(basename $(pwd))

或者

pwd | awk -F/ '{print "/" $(NF-1) "/" $(NF)}'

可能還有無數其他方式。 。 。

答案2

shell 可以使用變數修飾符 、 和 間接%執行%%#操作##。這些刪除給定模式的尾隨或前導匹配。請注意,該模式是一個外殼全域,不是正規表示式。

以下範例將列印最後兩個路徑元素,有或沒有可選的尾隨/

$ in="Android/2/Pipeline/Packages/test/debug/"
$ echo $( t=${in%/} && t=${t%/*/*} && echo ${in##$t} )
/test/debug/

相關內容