-
[Bash] 패턴 제거, 특정 패턴의 마지막 가져오기Dev 2025. 4. 7. 01:34반응형
커밋 메시지에 브랜치 이름을 prefix로 붙여주는 git hook 을 하나 만들다가 "/" 로 구분되는 문자열 중 마지막 문자를 가져오고 싶은 니즈가 생겼었습니다.
따라서 이걸 bash로 어떻게 하는지 간단하게 정리해봅니다.
"변수 안의 문자열에서, 가장 앞쪽부터 시작해 /로 끝나는 가장 긴 부분을 제거하고 나머지를 사용한다."
먼저 목표는 위와 같습니다.
만약 "feature/9nav"라는 문자열이 있다면, / 기준으로 가장 마지막 슬래시 이후의 문자열인 "9nav" 가져와야 합니다.bash 패턴 제거
bash 의 패턴 제거는 ${변수##패턴} 와 같이 사용 합니다.
${var#pattern} 처음부터 일치하는 가장 짧은 패턴 제거 ${var##pattern} 처음부터 일치하는 가장 긴 패턴 제거 ${var%pattern} 끝에서 일치하는 가장 짧은 패턴 제거 ${var%%pattern} 끝에서 일치하는 가장 긴 패턴 제거 사실 문법 자체가 강력하기 때문에 문법을 제대로 이해했다면 목표를 쉽게 이룰 수 있습니다.
"/" 로 나눈 것들 중 마지막은, "/" 로 이루어지는 패턴 중 가장 긴 패턴을 제거해주면 됩니다. 따라서 "##pattern" 이 적합합니다.즉, 아래와 같이 쓸 수 있습니다.
BRANCH_NAME="feature/9nav" echo ${BRANCH_NAME##*/} 9nav
예시에 다른 패턴들도 적용해보면 아래와 같이 정리해볼 수 있겠습니다.
${var##*/} 마지막 슬래시 이후의 값 추출 feature/9nav 9nav ${var%/*} 마지막 슬래시 이전의 값 추출 feature/9nav feature ${var%%/*} 첫 번째 슬래시 이전의 값 추출 feature/9nav feature 반응형'Dev' 카테고리의 다른 글
[git] 커밋 메시지에 preifx 붙이기는 git hook (0) 2025.04.07 Visual Studio Code - Short cut Cheet sheet (0) 2024.04.30 NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+ 에러 해결 (0) 2024.03.16 [Draw.io] 클래스 다이어그램 편집하기 (0) 2023.03.10 [git] revert 할 수 없을 때, commit revert is a merge but no -m option was given. (0) 2022.08.29