Linux Bash shell script

awk와 sed를 활용한 데이터 처리

임베디드 친구 2025. 2. 6. 10:37
728x90
반응형

Linux 환경에서 데이터를 처리하거나 파일 내용을 분석할 때, awksed는 강력한 도구로 활용됩니다. 이 글에서는 두 명령어의 기본 개념과 주요 사용법을 알아보고, 실습 예제를 통해 활용 방법을 익혀보겠습니다.


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 35

sed 소개

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
cherry

awk와 sed의 차이점

기능 awk sed
주요 용도 데이터 분석 및 처리 텍스트 편집 및 변환
데이터 구조 줄과 열(필드) 단위로 처리 줄 단위로 처리
프로그래밍 가능성 내장된 스크립팅 언어 제공 패턴과 명령 기반 처리

awk와 sed의 조합 사용

awksed를 함께 사용하여 복잡한 작업을 간단히 수행할 수 있습니다.

예제: 특정 문자열을 치환한 뒤 특정 조건에 맞는 데이터 출력

파일 records.txt:

John,25,Developer
Alice,30,Designer
Bob,22,Engineer
  1. EngineerTechnician으로 치환:
sed 's/Engineer/Technician/' records.txt > temp.txt
  1. 나이가 25세 이상인 사람만 출력:
awk -F',' '$2 >= 25 { print $1, $2, $3 }' temp.txt

결과:

Alice 30 Designer
John 25 Developer

결론

awksed는 각각 데이터 처리와 텍스트 변환에 강력한 도구이며, 이를 적절히 조합하면 효율적으로 파일을 분석하고 가공할 수 있습니다. 이 글에서 소개한 예제를 직접 실행하며 익혀 보세요. 앞으로도 다양한 실습을 통해 더 깊이 있는 활용 방법을 배워가길 바랍니다.

반응형