개발/Bash 쉘스크립트

[Bash] 리눅스 쉘 스크립트: 문자열 조작 - 길이 구하기, 문자열 추출, 문자열 자르기, 치환, 접두어, 접미어

일요일좋아하는사람 2025. 5. 11. 13:26
728x90
반응형

Bash에서 문자열은 매우 흔하게 다뤄지는 데이터 유형이며, 이를 효과적으로 다루기 위한 다양한 조작 기법들이 존재합니다. 문자열 길이를 구하거나, 부분 문자열을 추출하고, 치환하거나 삭제하는 등의 작업은 스크립트를 유연하고 강력하게 만들어줍니다.

이번 글에서는 Bash에서 문자열을 조작하는 여러 가지 방법을 하나하나 알아보겠습니다. 각 기능의 역할, 사용법, 예제를 실제 결과와 함께 설명하여 누구나 쉽게 이해할 수 있도록 구성하였습니다.


문자열 길이 구하기

역할: 변수에 저장된 문자열의 길이를 구합니다.

사용법: ${#변수명}

예제:

text="Hello, world!"
echo ${#text}

결과: 13 (공백 포함 전체 문자 수)


부분 문자열 추출

역할: 문자열의 일부분을 추출합니다.

사용법: ${변수명:시작위치:길이}

예제:

text="Hello, world!"
echo ${text:7:5}

결과: world


문자열 자르기 (IFS 활용)

역할: 문자열을 특정 구분자를 기준으로 나누어 배열로 저장합니다.

사용법:

IFS='구분자' read -ra 배열 <<< "$문자열"

예제:

text="apple,banana,cherry"
IFS=',' read -ra fruits <<< "$text"
echo ${fruits[0]}  # 첫 번째 요소

결과: apple

추가 예제:

for fruit in "${fruits[@]}"; do
  echo $fruit
fi

결과:

apple
banana
cherry

문자열에서 부분 치환

역할: 문자열의 일부분을 다른 문자열로 바꿉니다.

사용법: ${변수명/찾을문자열/바꿀문자열}

예제:

text="banana"
echo ${text/na/NA}

결과: baNAna (처음 나오는 na만 변경됨)


문자열에서 전체 치환

역할: 문자열에서 일치하는 모든 부분을 치환합니다.

사용법: ${변수명//찾을문자열/바꿀문자열}

예제:

text="banana"
echo ${text//na/NA}

결과: baNANa


접두어 제거

역할: 문자열에서 특정 접두어를 제거합니다.

사용법: ${변수명#패턴} (가장 짧은 일치) / ${변수명##패턴} (가장 긴 일치)

예제:

path="/home/user/docs/file.txt"
echo ${path#*/}  # 첫 슬래시 제거 후 나머지

결과: home/user/docs/file.txt

echo ${path##*/}  # 마지막 슬래시 뒤만 추출

결과: file.txt


접미어 제거

역할: 문자열에서 특정 접미어를 제거합니다.

사용법: ${변수명%패턴} (가장 짧은 일치) / ${변수명%%패턴} (가장 긴 일치)

예제:

filename="file.tar.gz"
echo ${filename%.*}  # 마지막 점(.) 이후 제거

결과: file.tar

echo ${filename%%.*}  # 첫 번째 점(.) 이후 모두 제거

결과: file


문자열 존재 여부 검사

역할: 문자열에 특정 문자열이 포함되어 있는지 확인

사용법:

if [[ $변수 == *검색어* ]]; then
  echo "포함됨"
fi

예제:

text="Hello, world!"
if [[ $text == *world* ]]; then
  echo "포함됨"
fi

결과: 포함됨


문자열 대소문자 변경 (Bash 4+)

역할: 문자열의 대소문자를 변경합니다.

사용법:

  • 소문자화: ${변수,,}
  • 대문자화: ${변수^^}

예제:

text="Hello"
echo ${text,,}  # 소문자

결과: hello

echo ${text^^}  # 대문자

결과: HELLO


이와 같이 Bash에서 제공하는 문자열 조작 기법들을 익혀두면, 복잡한 텍스트 처리 작업도 손쉽게 수행할 수 있습니다. 특히 스크립트를 작성할 때 조건 분기나 파일명 처리, 로그 분석 등에 매우 유용하게 활용됩니다.

728x90
반응형