bash shell의 규칙성이 있는 문자열에서 마지막 문자만 제거해야할 상황이 생겼다. underbar _ 패턴과 IFS 환경 변수를 사용하여 마지막 문자만 제거해보았다.
#!/bin/bash
INPUT_STR="apple_pear_strawberry_melon_end"
#기존의 IFS 변수를 저장한다.
BACKUP_IFS="$IFS"
#문자열에서 규칙적인 패턴을 사용하여 단어를 추출하기 위해 IFS 변수를 변경한다.
IFS='_'
# -a 옵션을 사용하여 추출된 문자를 array 형태 변수로 저장한다.
read -a ASTR <<< "$INPUT_STR"
#변경한 IFS 변수를 다시 원복한다.
IFS="$BACKUP_IFS"
NEW_STR=""
for tmp in "${ASTR[@]}"
do
#마지막 'end' 문자는 불필요하므로 NEWE_STR 에 추가하지 않고 종료한다.
if [ "$tmp" = "end" ] ; then
break;
fi
#첫번째 단어만 그대로 저장하고, 두번째 단어부터는 _ 를 앞에 추가하여 저장한다.
if [ "$NEW_STR" != "" ] ; then
NEW_STR=${NEW_STR}"_"${tmp}
else
NEW_STR="${tmp}"
fi
done
echo "ORI : " $INPUT_STR
echo "NEW : " $NEW_STR
< 결과 >
test@user1:~/test$ ./test.sh
ORI : apple_pear_strawberry_melon_end
NEW : apple-pear-strawberry-melon
< 참고 자료 링크 >
'Programming > C++' 카테고리의 다른 글
bin bash shell 특정 문자 포함 여부 확인 방법 ( contains 효과) (0) | 2023.02.20 |
---|---|
[ubuntu] bin bash shell - 폴더 파일 유무 확인 방법 (0) | 2023.02.20 |
LG 그램 노트북 windows 10 최신 업데이트 이후 무선 wifi 안되는 문제 해결 (KB5022282) (0) | 2023.02.06 |
sftp 명령어로 파일 받아오기 sftp, get, echo 명령어 정리 (0) | 2023.02.05 |
[ubuntu] 실행파일 있는데 없다고 에러 메시지 발생 ( bad interpreter: No such file or directory) (0) | 2023.02.05 |
댓글