개요
Bash에서 문자열을 조작하는 기술은 쉘 스크립트를 작성할 때 매우 유용하게 활용됩니다.
이번 글에서는 Bash에서 문자열 자르기와 관련된 네 가지 주요 방법을 자세히 설명합니다:
- 특정 범위의 문자열 자르기 (Substring)
cut
명령어로 문자열 자르기- 패턴으로 문자열 자르기 (Parameter Expansion)
- 특정 문자로 문자열 분리하기 (
IFS
,read
,awk
등)
1. 특정 범위의 문자열 자르기 (Substring)
Bash에서는 문자열의 일부만 추출할 수 있습니다. 다음은 ${string:position:length}
문법을 이용한 방법입니다.
str="HelloBashWorld"
echo ${str:0:5} # Hello
echo ${str:5} # BashWorld (5번째부터 끝까지)
echo ${str:5:4} # Bash
${str:pos}
: pos부터 끝까지 잘라냄${str:pos:len}
: pos부터 len 길이만큼 잘라냄- 음수 인덱스는 지원되지 않음 (Bash 4.2 이상에서는
${str: -5}
와 같이 사용할 수 있음)
2. cut
명령어로 문자열 자르기
파일이나 입력 스트림에서 특정 위치의 문자열을 자를 때는 cut
명령어가 유용합니다.
echo "apple,banana,grape" | cut -d',' -f2
# 출력: banana
옵션 설명:
-d
: 구분자(delimiter) 지정-f
: 필드 번호 지정
문자 단위로 자르려면 -c
옵션을 사용합니다.
echo "HelloWorld" | cut -c1-5
# 출력: Hello
3. 패턴으로 특정 문자열 자르기 (Parameter Expansion)
Bash에서는 특정 문자열 패턴을 기준으로 문자열을 자를 수 있습니다.
str="filename.txt"
echo ${str%.txt} # filename (오른쪽 .txt 제거)
echo ${str#*.} # txt (. 앞까지 제거)
${var#pattern}
: 앞에서 가장 짧은 패턴 제거${var##pattern}
: 앞에서 가장 긴 패턴 제거${var%pattern}
: 뒤에서 가장 짧은 패턴 제거${var%%pattern}
: 뒤에서 가장 긴 패턴 제거
이 기법은 파일명, 경로, 확장자 등을 추출할 때 매우 유용합니다.
4. 특정 문자로 문자열 분리하기 (Split)
쉘에서 문자열을 특정 문자 기준으로 나누는 가장 간단한 방법은 IFS
와 read
를 활용하는 것입니다.
str="red:green:blue"
IFS=':' read -r a b c <<< "$str"
echo $a # red
echo $b # green
echo $c # blue
배열로 분리하기
str="dog,cat,rabbit"
IFS=',' read -ra animals <<< "$str"
for animal in "${animals[@]}"; do
echo "$animal"
done
또는 awk
와 같은 도구를 사용할 수도 있습니다.
echo "key=value" | awk -F'=' '{print $1}' # key
echo "key=value" | awk -F'=' '{print $2}' # value
맺음말
Bash에서 문자열을 다루는 방법은 다양하며, 상황에 맞는 도구를 선택하면 효율적인 스크립트를 작성할 수 있습니다. 위에서 소개한 방법들을 적절히 조합하면 텍스트 데이터 처리에 큰 도움이 될 것입니다.
끝까지 읽어 주셔서 감사합니다!
728x90
반응형
'Linux,Unix,BSD' 카테고리의 다른 글
HAProxy-2.4.2 설치하기 on CentOS8 (0) | 2021.07.12 |
---|---|
[linux] Crontab: 시스템 작업 자동화의 핵심 도구 (0) | 2021.06.09 |
[shell] root 권한으로 pipe 처리하기 (파일에 내용 추가하기) (0) | 2021.05.25 |
[linux] curl을 이용한 Basic 인증하기 (0) | 2021.05.09 |
ubuntu 20.04에 python 3.10 설치하기 (0) | 2021.05.06 |