> 텍스트 처리 및 검색 > gawk

gawk: 강력한 텍스트 처리 도구

`gawk`는 GNU Awk의 구현체로, 텍스트 파일에서 패턴을 검색하고 해당 패턴에 일치하는 줄에 대해 지정된 작업을 수행하는 데 사용되는 강력한 스크립팅 언어입니다. 데이터 추출, 보고서 생성, 텍스트 변환 등 다양한 용도로 활용됩니다.

개요

`gawk`는 텍스트 데이터를 행과 필드 단위로 처리하는 데 특화된 프로그래밍 언어입니다. 정규 표현식을 사용하여 복잡한 패턴 매칭을 수행하고, 조건부 로직, 루프, 변수 등을 활용하여 데이터를 유연하게 조작할 수 있습니다. 특히 로그 파일 분석, CSV/TSV 파일 처리, 시스템 보고서 생성 등에 매우 유용합니다.

주요 특징

  • 정규 표현식을 이용한 강력한 패턴 매칭
  • 행(record) 및 필드(field) 기반 데이터 처리
  • 내장 변수 및 함수 제공 (NR, NF, $1, $2 등)
  • BEGIN/END 블록을 통한 전처리 및 후처리 기능

주요 옵션

`gawk`는 다양한 옵션을 통해 스크립트 실행 방식과 데이터 처리 방법을 제어할 수 있습니다.

스크립트 및 입력 제어

호환성 및 디버깅

생성된 명령어:

명령어를 조합해 보세요.

설명:

`gawk` 명령어를 실행합니다.

위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.

사용 예시

다음은 `gawk`를 사용하여 텍스트 데이터를 처리하는 몇 가지 일반적인 예시입니다.

파일의 각 줄에서 첫 번째와 세 번째 필드 출력

echo "apple 10 red\nbanana 20 yellow\norange 30 orange" | gawk '{print $1, $3}'

공백으로 구분된 파일에서 첫 번째와 세 번째 필드만 출력합니다.

특정 패턴을 포함하는 줄만 출력

echo "INFO: System started\nERROR: Disk full\nWARNING: Low memory" | gawk '/ERROR/ {print}'

입력에서 'ERROR' 문자열을 포함하는 모든 줄을 출력합니다.

필드 구분자를 쉼표(,)로 지정하고 두 번째 필드 출력

echo "Name,Age,City\nAlice,30,New York\nBob,24,London" | gawk -F',' '{print $2}'

쉼표로 구분된 CSV 데이터에서 두 번째 필드만 추출합니다.

BEGIN 블록을 사용하여 헤더 출력 후, 각 줄의 필드 수 출력

echo "A B C\nD E" | gawk 'BEGIN {print "Field Count:"} {print NF}'

처리 시작 전에 헤더를 출력하고, 각 줄의 필드 개수를 보여줍니다.

외부 변수를 사용하여 조건부 처리

echo "item1 5 8\nitem2 12 15\nitem3 3 7" | gawk -v threshold=10 '$3 > threshold {print $0}'

외부에서 정의된 `threshold` 값보다 세 번째 필드가 큰 줄만 출력합니다.

설치

`gawk`는 대부분의 리눅스 배포판에 기본적으로 포함되어 있지만, 없는 경우 다음 명령어를 사용하여 설치할 수 있습니다.

Debian/Ubuntu

sudo apt update && sudo apt install gawk

Debian 또는 Ubuntu 기반 시스템에서 `gawk`를 설치합니다.

RHEL/CentOS/Fedora

sudo yum install gawk # 또는 sudo dnf install gawk

RHEL, CentOS 또는 Fedora 기반 시스템에서 `gawk`를 설치합니다.

팁 & 주의사항

`gawk`를 더욱 효과적으로 사용하기 위한 팁과 주의할 점입니다.

성능 최적화

  • 큰 파일 처리 시, 불필요한 연산을 피하고 필요한 필드만 처리하도록 스크립트를 최적화하세요.
  • 정규 표현식은 복잡할수록 성능 저하를 일으킬 수 있으므로, 가능한 한 단순하게 유지하세요.

자주 사용되는 내장 변수

`gawk`는 데이터 처리에 유용한 여러 내장 변수를 제공합니다.

  • NR: 현재 레코드(줄) 번호
  • NF: 현재 레코드의 필드(컬럼) 수
  • FNR: 현재 파일 내 레코드(줄) 번호
  • $0: 현재 레코드 전체
  • $1, $2, ...: 각 필드의 값

스크립트 파일 사용

복잡한 `gawk` 스크립트는 명령줄에 직접 입력하기보다 `-f` 옵션을 사용하여 별도의 파일로 관리하는 것이 가독성과 유지보수 측면에서 좋습니다.


동일 카테고리 명령어