我需要使用 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/