KSH를 사용하여 파일 이름에서 문자열 가져오기

KSH를 사용하여 파일 이름에서 문자열 가져오기

내 파일 이름은 "XXAR_CUST_INV_pt_PT_BURST.xml"과 같습니다. 결과적으로 "버스트"가 필요합니다.

참고: 파일 이름에는 여러 개의 "_"(밑줄)이 포함될 수 있습니다. 따라서 마지막 밑줄 앞에 문자열이 필요하고 "BURST"라는 확장명 ".xml"이 필요합니다.

s="XXAR_CUST_INV_pt_PT_BURST.xml"
BUSRTING='';
source <(sed -r 's/(.*)_([^_]*)[.].*/BUSRTING="\1"/' <<< "${s}")
# Result:
BUSRTING=$(printf '%s' "$BUSRTING" | tr '[a-z]' '[A-Z]')
echo BUSRTING=$BUSRTING"

예상되는 결과는 BURST입니다.

s="XXAR_CUST_INV_pt_PT_BURST_US.xml"
BUSRTING='';
source <(sed -r 's/(.*)_([^_]*)[.].*/BUSRTING="\1"/' <<< "${s}")
# Result:
BUSRTING=$(printf '%s' "$BUSRTING" | tr '[a-z]' '[A-Z]')
echo BUSRTING=$BUSRTING"

예상되는 결과는 미국

답변1

BURSTING=${s%.xml}         # cut off extension
BURSTING=${BURSTING##*_}   # cut off anything before the last underscore
typeset -u BURSTING        # make uppercase

관련 정보