如何使用 shell 命令从目录中获取子字符串部分

如何使用 shell 命令从目录中获取子字符串部分

我只需要使用 shell 命令从以下目录路径中提取最后 2 部分

“Android/2.1/软件包/测试/调试/”

预期输出:/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 可以使用变量修饰符、%和间接执行此操作。这些修饰符会删除给定模式的尾随或前导匹配项。请注意,模式是 shell%%###全局,不是正则表达式。

下面的示例将打印最后两个路径元素,带或不带可选的尾随/

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

相关内容