프로그래밍/AWK

AWK 기본 구문: 패턴과 액션으로 데이터 처리의 효율성을 높이자

shimdh 2025. 6. 16. 07:17
728x90

AWK는 데이터 처리와 분석을 위한 강력한 도구로, 특히 대량의 데이터를 다루는 데 매우 유용합니다. 이 블로그 포스트에서는 AWK의 기본 구조인 패턴액션에 대해 자세히 살펴보고, 이를 통해 데이터 처리의 효율성을 높이는 방법을 알아보겠습니다.

AWK란 무엇인가?

AWK는 Unix 및 Unix-like 시스템에서 사용되는 프로그래밍 언어로, 텍스트 파일을 처리하고 데이터를 조작하는 데 특화되어 있습니다. AWK는 데이터의 검색, 필터링, 변형 및 보고서 생성을 쉽게 할 수 있도록 도와줍니다. AWK의 기본적인 사용법을 이해하면, 데이터 분석 및 처리 작업을 훨씬 더 효율적으로 수행할 수 있습니다.

패턴 (Pattern)

패턴의 정의

패턴은 AWK에서 데이터를 선택하기 위한 조건을 정의합니다. 특정 조건을 만족하는 레코드(행)를 필터링하여 해당 레코드에 대해 정의된 작업(액션)을 수행하게 됩니다. 패턴은 다음과 같은 다양한 형태로 구성될 수 있습니다:

  • 특정 문자열 포함 여부
  • 정규 표현식 매칭
  • 숫자 비교
  • 파일 끝 또는 시작 지점

패턴 사용 예시

예를 들어, 다음과 같은 명령어를 사용하여 "apple"이라는 단어가 포함된 모든 행을 출력할 수 있습니다:

awk '/apple/' fruits.txt

이 경우 /apple/이 패턴이며, fruits.txt 파일에서 "apple"이 있는 모든 줄이 출력됩니다. 이처럼 패턴을 활용하면 특정 키워드나 조건에 맞는 데이터를 손쉽게 추출할 수 있습니다.

액션 (Action)

액션의 정의

액션은 선택된 레코드에 대해 수행할 작업을 정의합니다. 액션 블록은 중괄호 {} 안에 정의되며, 다양한 내장 함수와 변수를 사용할 수 있습니다. 액션을 통해 사용자는 데이터를 어떻게 처리할지를 결정할 수 있습니다.

액션 사용 예시

기본적인 액션 예시는 다음과 같습니다:

awk '/apple/ { print $0 }' fruits.txt

여기서 { print $0 }는 현재 레코드를 그대로 출력하라는 의미입니다. $0은 전체 행을 나타내고, $1, $2, ... 는 각각 첫 번째 필드, 두 번째 필드를 가리킵니다. 이러한 액션을 통해 사용자는 필요한 정보를 쉽게 출력하거나 변형할 수 있습니다.

패턴과 액션의 결합

결합 예제

패턴과 액션을 함께 사용하는 것이 가장 일반적이며, 이를 통해 더욱 복잡한 데이터 처리 작업을 수행할 수 있습니다. 아래 예제에서는 가격이 10보다 큰 과일만 출력합니다:

awk '$2 > 10 { print $1 }' fruits_price.txt

위 코드에서 $2 > 10 이 부분이 패턴이고, { print $1 } 이 부분이 액션입니다. 즉, 두 번째 열의 값(가격)이 10보다 큰 경우 첫 번째 열(과일 이름)을 출력합니다. 이와 같은 방식으로 패턴과 액션을 결합하면, 특정 조건에 맞는 데이터만을 선택적으로 처리할 수 있습니다.

여러 개의 패턴 및 액션

AWK에서는 하나 이상의 패턴 및 그에 대한 여러 개의 액션을 지정할 수도 있습니다. 이를 통해 더욱 다양한 조건을 설정하고, 각 조건에 맞는 작업을 수행할 수 있습니다:

awk '/apple/ { print "Found apple!" }
     /banana/ { print "Found banana!" }' fruits.txt 

위 코드는 fruits.txt 파일에서 "apple"이나 "banana"가 발견될 때마다 각각 다른 메시지를 출력합니다. 이처럼 여러 패턴과 액션을 조합하면, 데이터 처리의 유연성을 높일 수 있습니다.

요약

AWK의 기본 구문인 패턴액션은 데이터 처리를 위한 핵심 요소입니다.

  • 패턴: 어떤 데이터를 선택할 것인지 결정하며,
  • 액션: 선택된 데이터에 대해 무엇을 할 것인지 정의합니다.

각 요소를 적절히 활용하면 복잡한 데이터 처리도 간단하게 해결할 수 있으며, 실전에서도 유용하게 쓰일 것입니다. AWK를 통해 데이터 분석의 효율성을 높이고, 다양한 작업을 자동화할 수 있는 기회를 제공받게 됩니다.

728x90