xxARCRPT_ES_US.rtf 파일 이름에서 문자열을 추출하고 싶습니다.

xxARCRPT_ES_US.rtf 파일 이름에서 문자열을 추출하고 싶습니다.

xxARCRPT_ES_US.rtf할당할 파일 이름에서 문자열을 추출하고 싶습니다 .

lobcode=XXARCRPT ,LANG=es, TERITORY=US

참고: .ksh 파일에서 구현해야 했습니다.

예를 들어,

file name: xxARCRPT_ES_US.rtf
----------> lobcode=XXARCRPT   (must be in upper case)
----------> LANG=es            (must be in lower case)
----------> TERITORY=US        (must be in upper case)

누구든지 문자열을 3개의 변수로 분할하도록 도와줄 수 있습니까?

고마워요
앨런

답변1

filename=xxARCRPT_ES_US.rtf

이렇게 하면 첫 번째 밑줄 뒤의 모든 항목이 제거되어 에 저장되고 lobcode대문자로 표시됩니다 tr.

lobcode=${filename%%_*}
lobcode=$(printf '%s' "$lobcode" | tr '[a-z]' '[A-Z]')

그러면 첫 번째 밑줄 뒤의 내용으로 중간 임시 변수가 설정됩니다.

rest=${filename#*_}

변수에 언어 접두사(첫 번째 밑줄 앞의 모든 항목)를 할당 language하고 소문자로 변환합니다.

language=${rest%%_*}
language=$(printf '%s' "$language" | tr '[A-Z]' '[a-z]')

이렇게 하면 첫 번째 밑줄 앞의 선행 텍스트가 제거되고 첫 번째 마침표 이후의 모든 내용이 제거된 다음 할당됩니다.저것변수에 추가 territory한 다음 대문자로 사용합니다.

rest=${rest#*_}
territory=${rest%%.*}
territory=$(printf '%s' "$territory" | tr '[a-z]' '[A-Z]')

...그런 다음 임시 변수를 정리합니다.

unset rest

관련 정보