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