SED와 AWK의 개념과 사용

sedawk는 텍스트 파일을 처리하고 변환하기 위해 유닉스/리눅스에서 자주 사용하는 스트림 편집기 도구입니다. 이 두 도구는 파일에서 데이터를 검색하거나 수정하고, 보고서를 생성하는 데 유용합니다.


1. SED (Stream Editor)

개념

  • sed는 텍스트를 한 줄씩 읽어와 검색, 추가, 삭제, 변환 및 대체 작업을 수행하는 스트림 편집기입니다.
  • 텍스트를 직접 변경하지 않고 출력에 변환된 결과를 보여줍니다.

주요 기능

  1. 텍스트 검색 및 대체
    • 특정 문자열을 다른 문자열로 바꿈.
  2. 라인 삭제
    • 지정한 조건에 따라 특정 라인을 삭제.
  3. 삽입 및 추가
    • 파일의 특정 위치에 텍스트를 삽입.
  4. 정규식 지원
    • 강력한 패턴 매칭을 위한 정규식 활용 가능.

사용법

sed [옵션] '명령어' [파일명]

예제

  1. 텍스트 대체

    sed 's/old/new/g' file.txt
    • 파일의 모든 old 문자열을 new로 대체.
    • g 플래그는 파일 내 모든 발생 부분을 변경.
  2. 특정 라인 삭제

    sed '3d' file.txt
    • 파일의 3번째 줄을 삭제.
  3. 특정 라인 추가

    sed '2a\This is a new line' file.txt
    • 2번째 줄 아래에 "This is a new line"을 추가.
  4. 정규식 사용

    sed -n '/pattern/p' file.txt
    • 파일에서 pattern을 포함하는 라인만 출력.

2. AWK

개념

  • awk는 텍스트 데이터를 다루는 데 중점을 둔 프로그래밍 언어입니다.
  • 패턴 매칭 및 텍스트 처리를 위해 설계되었으며, 컬럼 기반 데이터 처리에 강력합니다.

주요 기능

  1. 패턴 매칭
    • 파일에서 특정 조건에 따라 데이터를 필터링.
  2. 필드 기반 처리
    • 파일 내에서 데이터를 컬럼 단위로 처리.
  3. 계산 및 요약
    • 데이터 집계(합계, 평균 등) 작업 지원.
  4. 레코드 처리
    • 파일 내 각 라인을 하나의 레코드로 처리.

사용법

awk '패턴 {동작}' [파일명]

예제

  1. 특정 컬럼 출력

    awk '{print $2}' file.txt
    • 파일의 2번째 컬럼을 출력.
  2. 패턴 매칭 및 출력

    awk '/error/ {print $0}' file.txt
    • error가 포함된 모든 라인 출력.
  3. 조건부 출력

    awk '$3 > 100 {print $1, $3}' file.txt
    • 3번째 컬럼이 100보다 큰 경우, 1번째와 3번째 컬럼 출력.
  4. 합계 계산

    awk '{sum += $2} END {print "Sum:", sum}' file.txt
    • 2번째 컬럼의 합계를 계산하여 출력.

SED vs AWK

기능 SED AWK
주 사용 목적 텍스트 검색 및 수정 텍스트 검색, 처리 및 데이터 분석
데이터 단위 라인(line) 기반 처리 레코드(라인) 및 필드(컬럼) 기반 처리
정규식 지원 지원 지원
수학적 연산 제한적 강력한 연산 지원
속도 단순 작업에 더 빠름 복잡한 작업에 효율적

결론

  • sed는 텍스트 변환(대체, 삭제 등) 작업에 적합하며, 간단한 텍스트 처리에서 강력합니다.
  • awk는 데이터 분석과 컬럼 기반 작업이 필요한 경우 적합하며, 조건부 출력 및 계산 작업에서 유용합니다.

+ Recent posts