반응형
Linux에서 문자열을 조작하는 것은 스크립트 작성에 필수적인 작업 중 하나입니다. 이 글에서는 Bash Shell Script에서 자주 사용하는 문자열 조작 도구인 cut
, awk
, sed
를 활용하여 문자열을 효과적으로 다루는 방법을 소개합니다. 실습 예제도 포함되어 있으니 따라 하면서 익혀보세요!
1. cut
명령어
cut
명령어는 입력 데이터를 필드별로 분리하거나 특정 문자 범위를 추출하는 데 사용됩니다.
사용법
cut [옵션] [파일]
-f
: 필드 번호를 지정-d
: 구분자를 지정 (기본값은 탭 문자)-c
: 특정 문자 위치를 추출
예제 1: 콤마로 구분된 데이터 추출
# data.csv 내용
# name,age,city
# John,25,New York
# Alice,30,Los Angeles
# Bob,22,Chicago
echo "John,25,New York" | cut -d',' -f1 # John
예제 2: 특정 문자 위치 추출
echo "abcdefg" | cut -c1-3 # abc
echo "abcdefg" | cut -c4- # defg
2. awk
명령어
awk
는 강력한 텍스트 처리 언어로, 데이터를 필드 단위로 나누고 조작할 수 있습니다.
사용법
awk '패턴 { 액션 }' [파일]
$1
,$2
등: 각 필드를 나타냄FS
: 필드 구분자 지정
예제 1: 필드 출력
echo "John,25,New York" | awk -F',' '{print $1}' # John
echo "John,25,New York" | awk -F',' '{print $3}' # New York
예제 2: 조건에 따른 출력
# data.txt 내용
# John 25
# Alice 30
# Bob 22
echo -e "John 25\nAlice 30\nBob 22" | awk '$2 > 24 {print $1}'
# Alice
# John
3. sed
명령어
sed
는 강력한 문자열 검색과 치환 도구입니다. 대량의 텍스트 파일이나 문자열을 빠르게 수정할 때 유용합니다.
사용법
sed '패턴/명령' [파일]
s
: 문자열 치환d
: 줄 삭제p
: 특정 줄 출력
예제 1: 문자열 치환
echo "Hello World" | sed 's/World/Bash/' # Hello Bash
예제 2: 특정 줄 삭제
echo -e "Line1\nLine2\nLine3" | sed '2d'
# 결과:
# Line1
# Line3
예제 3: 구분자 변경
echo "John,25,New York" | sed 's/,/|/g'
# John|25|New York
4. 도구 비교
도구 | 주요 기능 | 장점 |
---|---|---|
cut | 간단한 필드 추출 | 구문이 간단하고 빠름 |
awk | 고급 텍스트 조작 | 프로그래밍 기능 제공 |
sed | 문자열 치환 | 빠르고 유연함 |
5. 실습: 혼합 사용 예제
다양한 도구를 혼합하여 문제를 해결하는 실습을 진행해 봅시다.
문제: 데이터 파일에서 특정 조건을 만족하는 데이터를 변환
data.csv:
name,age,city
John,25,New York
Alice,30,Los Angeles
Bob,22,Chicago
목표: 25세 이상인 사람의 이름을 대문자로 변환하고 구분자를 |
로 변경
해결 스크립트
#!/bin/bash
# 파일에서 처리
cat data.csv \
| awk -F',' '$2 >= 25 {print $1 "," $2 "," $3}' \
| sed 's/,/|/g' \
| awk -F'|' '{print toupper($1) "|" $2 "|" $3}'
결과:
ALICE|30|Los Angeles
JOHN|25|New York
마무리
이번 포스팅에서는 cut
, awk
, sed
를 활용하여 문자열을 조작하는 방법을 알아보았습니다. 각 도구는 특화된 기능이 있으므로 상황에 맞게 적절히 선택하는 것이 중요합니다. 실습을 통해 각 도구의 사용법에 익숙해지길 바랍니다.
반응형
'Linux Bash shell script' 카테고리의 다른 글
Bash Shell Script 디렉토리 탐색 (find, xargs) (0) | 2025.01.29 |
---|---|
Bash Shell Script 파일 생성, 삭제, 복사 (touch, rm, cp, mv) (0) | 2025.01.29 |
Bash Shell Script 배열 선언 및 접근 방법 (0) | 2025.01.27 |
Bash Shell Script 매개변수와 반환값 처리 (0) | 2025.01.26 |
Linux Bash Shell Script 함수 정의와 호출 (0) | 2025.01.25 |