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

おすすめ記事