내 파일 이름은 "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