Мне нужно будет извлечь только последние 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/