Как получить часть подстроки из каталога с помощью команды оболочки

Как получить часть подстроки из каталога с помощью команды оболочки

Мне нужно будет извлечь только последние 2 части из следующего пути к каталогу с помощью команды оболочки

"Android/2.1/Пакеты/тест/отладка/"

Ожидаемый результат: /test/debug

Этот путь является динамическим, и он будет меняться с различными значениями пути, например, «Android/2/Pipeline/Packages/test/debug/».

Я не смог найти конкретное регулярное выражение, которое может извлечь последние 2 части, даже если остальная часть значения пути останется неизменной, т.е. только для получения '/test/debug'

Буду признателен, если кто-нибудь сможет помочь в этом вопросе.

Спасибо

решение1

Полагаю, есть много подходов, которые вы можете попробовать (заменив pwd на что-то подходящее для вашего варианта использования):

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

или

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

И, вероятно, бесчисленное множество других способов...

решение2

Оболочка может сделать это косвенно с помощью модификаторов переменных %, %%, #и ##. Они удаляют завершающее или начальное соответствие для указанного шаблона. Обратите внимание, что шаблон является оболочкойшар, не является регулярным выражением.

В следующем примере будут выведены последние два элемента пути с необязательным конечным символом или без него./

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

Связанный контент