본문 바로가기
Programming/C++

bin bash shell 마지막 문자열 또는 특정 문자열 제거

by AUTORI 2023. 2. 20.

 

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

 

 

 

< 참고 자료 링크 >

 

[LINUX] 📚 IFS(Internal Field Separator) 알기 쉽게 정리

BASH IFS IFS는 Internal Field Separator의 약자로 외부프로그램을 실행할 때 입력되는 문자열을 나눌 때 기준이 되는 문자를 정의하는 환경 변수이다. 터미널에서 환경변수를 출력해보면 공백문자가 출

inpa.tistory.com

 

댓글