Назад | Перейти на главную страницу

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

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

"Android / 2.1 / Пакеты / test / debug /"

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

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

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

Цените, если кто-нибудь может помочь в этом

Спасибо

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

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

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

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

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

или

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

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