쉘 명령을 사용하여 다음 디렉토리 경로에서 마지막 2개 부분만 추출해야 합니다.
"안드로이드/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/