728x90
반응형
Bash Shell Script awk와 sed를 활용한 데이터 처리
Linux 환경에서 데이터를 처리하거나 파일 내용을 분석할 때, awk와 sed는 강력한 도구로 활용됩니다. 이 글에서는 두 명령어의 기본 개념과 주요 사용법을 알아보고, 실습 예제를 통해 활용 방법을 익혀보겠습니다.
awk 소개
awk는 텍스트 파일을 줄 단위로 읽고, 특정 조건에 맞는 데이터를 추출하거나 가공할 수 있는 강력한 텍스트 처리 도구입니다.
awk의 기본 문법
awk 'pattern { action }' file- pattern: 데이터를 필터링하는 조건 (예: 특정 문자열 포함 여부).
- action: 조건에 맞는 데이터에 수행할 작업 (예: 출력, 계산 등).
- file: 처리 대상 파일.
주요 필드 변수
$0: 현재 줄 전체.$1,$2, ...: 현재 줄의 필드(열) 값.NR: 현재 줄 번호.NF: 현재 줄의 필드 개수.
예제 1: 특정 열 출력
파일 data.txt:
Alice 30
Bob 25
Charlie 35명령어:
awk '{ print $1 }' data.txt결과:
Alice
Bob
Charlie예제 2: 조건에 맞는 줄 출력
30세 이상인 사람만 출력:
awk '$2 >= 30 { print $1, $2 }' data.txt결과:
Alice 30
Charlie 35sed 소개
sed는 스트림 에디터로, 텍스트 데이터를 읽어서 변환하거나 편집하는 데 사용됩니다. 주로 텍스트 치환, 삽입, 삭제에 활용됩니다.
sed의 기본 문법
sed 'command' file- command: 텍스트 처리 명령 (예: 치환, 삭제).
- file: 처리 대상 파일.
주요 옵션
-n: 출력 결과를 억제하고, 명시적으로 출력하도록 설정.-i: 파일 내용을 직접 수정.
예제 1: 문자열 치환
파일 example.txt:
apple
banana
cherry명령어:
sed 's/apple/orange/' example.txt결과:
orange
banana
cherry예제 2: 특정 줄 삭제
2번째 줄 삭제:
sed '2d' example.txt결과:
apple
cherryawk와 sed의 차이점
| 기능 | awk | sed |
|---|---|---|
| 주요 용도 | 데이터 분석 및 처리 | 텍스트 편집 및 변환 |
| 데이터 구조 | 줄과 열(필드) 단위로 처리 | 줄 단위로 처리 |
| 프로그래밍 가능성 | 내장된 스크립팅 언어 제공 | 패턴과 명령 기반 처리 |
awk와 sed의 조합 사용
awk와 sed를 함께 사용하여 복잡한 작업을 간단히 수행할 수 있습니다.
예제: 특정 문자열을 치환한 뒤 특정 조건에 맞는 데이터 출력
파일 records.txt:
John,25,Developer
Alice,30,Designer
Bob,22,EngineerEngineer를Technician으로 치환:
sed 's/Engineer/Technician/' records.txt > temp.txt- 나이가 25세 이상인 사람만 출력:
awk -F',' '$2 >= 25 { print $1, $2, $3 }' temp.txt결과:
Alice 30 Designer
John 25 Developer결론
awk와 sed는 각각 데이터 처리와 텍스트 변환에 강력한 도구이며, 이를 적절히 조합하면 효율적으로 파일을 분석하고 가공할 수 있습니다. 이 글에서 소개한 예제를 직접 실행하며 익혀 보세요. 앞으로도 다양한 실습을 통해 더 깊이 있는 활용 방법을 배워가길 바랍니다.
반응형
'Linux Bash shell script' 카테고리의 다른 글
| Bash Script에서 `curl`과 `jq` 사용법 [ 외부 프로그램 활용하기 ] (0) | 2025.02.08 |
|---|---|
| Bash Shell Script 실행 속도 최적화 (0) | 2025.02.07 |
| Bash Shell Script - 정규표현식과 grep (0) | 2025.02.05 |
| Bash Shell Script 로그 파일 작성 및 분석 (0) | 2025.02.04 |
| Bash Shell Script 디버깅 옵션: `set -x`와 `set -e` 사용법 (0) | 2025.02.03 |