리눅스

gawk 소개

작성자
heukchoo
작성일
2021-01-18 00:33
조회
1468
gawk는 원조인 유닉스의 awk를 GNU(자유 소프트웨어 재단) 정책에 따라 무료 프로그램으로 제작한 것이다.


gawk는 텍스트 편집에 최적화된 스크립트 언어이다.

또한, 엑셀과 유사하게 텍스트 정보를 행열 단위로 처리할 수 있어 엑셀과 더불어 다양한 실무에서 활용할 수 있다.


gawk는 속도가 매우 빠르고 데이터 처리량에 한계가 없기 때문에 대용량 데이터 처리에도 적합하다.

엑셀의 경우 최대 1백만줄(2013 버전)이 한계이고 프로그램이 무거워 1백만줄을 모두 사용하기도 어렵다.

반면 gawk는 프로그램이 매우 가벼워서 컴퓨터 저장장치의 용량이 허가하는 범위에서 제한없이 데이터 처리가 가능하다.

물론, C언어 등 기본적인 프로그래밍 언어와 비교하면 속도가 빠른것은 아니다.

 * 처리속도: C언어  >>>> 넘사벽 >>>>  gawk >>>> 넘사벽 >>>> 엑셀


gawk는 주로 데이터 처리에 활용되지만, 스크립트 언어이기 때문에 다른 컴퓨터 언어처럼 다양한 기능의 프로그래밍이 가능하다.

C언어 등의 프로그램보다 다루기 편하기 때문에 gawk 하나만 다룰 수 있어도 업무처리 효율이 극적으로 향상될 것이다.






운영체제별 gawk 사용방법


인기가 많은 툴이기 때문에 여러 환경에서 사용할 수 있도록 다양한 버전이 제공된다.

프로그램 다운로드와 설치는 간단하므로 설명을 생략한다.


gawk는 쉘이나 cmd 같은 명령 프롬프트 환경에서 동작하며, 리눅스 쉘에 최적화되어있다.

윈도우 버전도 있지만 cmd 특유의 부실함으로 문법을 이상하게 표현해야 하거나 한글을 사용할 수 없는 등의 제약이 발생한다.

다행히 한글 문제는 nawk(New awk)를 사용하면 된다.

 * 윈도우에서 구동할 경우 필히 nawk로 사용하거나 cmder을 사용하길 권한다.(cmder 추천)


gawk는 명령 프롬프트에서 직접 작성하여 구동하거나, 스크립트 파일을 만들어 구동할 수 있다.

윈도우 cmd의 문법표현 문제를 해결하기 위해서는 반드시 스크립트 파일을 사용해야 한다.

 * nawk의 경우 명령 프롬프트에서 제대로 동작하지 않으므로 반드시 스크립트 파일을 사용해야 한다.

본 블로그에서는 간단한 코드의 경우 명령 프롬프트에서 구동하는 방식으로 설명할 것이며, 윈도우에서 사용할 경우 반드시 스크립트 파일로 만들어 구동해야 한다.






gawk 사용방법(명령 프롬프트)


$echo "heuk choo" | gawk '{print $1}'
heuk

$gawk '{print $2}' 텍스트.txt
choo

$gawk '{print $2}' 텍스트.txt > 결과.txt


gawk는 항상 입력 데이터가 있어야 한다.

첫번째 예시에서는 echo 명령으로 "heuk choo"의 2열 데이터를 파이프 라인(|)을 통해 gawk에게 넘겨주었다.

gawk는 데이터를 받아 작은따옴표(')와 중괄호 사이의 명령대로 실행하여 결과를 출력하였다.

print $1 명령은 입력 데이터의 1열을 출력하라는 의미이다.


두번째 예시에서는 '텍스트.txt' 파일로 데이터를 입력하는 경우이다.

첫번째 예시와 동일한 "heuk choo" 텍스트가 파일로 작성된 경우이다.

파일명은 명령문법 다음에 표기하도록 한다.

* cat 텍스트.txt | gawk '{print $1}' 과 같이 cat 명령으로 파일을 읽어서(윈도우는 type 명령)
  파이프 라인(|)으로 gawk에 전달해 주어도 된다.


세번째 예시는 두번째와 동일하게 파일을 읽어 동작하며, 결과를 '결과.txt' 파일로 저장하는 경우이다.

꺾쇠(>)를 사용하면 꺾쇠 좌측의 결과를 우측 파일명의 파일로 저장한다.

더블꺾쇠(>>)를 사용하면 기존 파일이 있는 경우, 처리결과를 기존 파일에 추가로 붙여 넣는다.


gawk 사용방법(스크립트 파일)


스크립트 파일(script.p), 확장자는 무관
{

print $1

}

$echo "heuk choo" | gawk -f script.p
heuk

$gawk -f script.p 텍스트.txt
choo

$gawk -f script.p 텍스트.txt > 결과.txt


스크립트는 gawk의 명령부분을 별도 파일로 작성하면 된다.

명령 프롬프트와 달리 작은따옴표(')는 표기하지 않으며 중괄호는 표기한다.


명령 프롬프트에서 gawk의 -f 옵션을 사용하면 스크립트 파일을 구동할 수 있다.

스크립트 파일명은 -f 옵션 뒤에 공백으로 띄워서 표기하면 된다.

데이터 파일을 입력하는 경우 스크립트 파일명 다음에 데이터 파일명이 오도록 한다.

 * nawk의 경우, nawk -f script.p 텍스트.txt > 결과.txt 와 같이 사용하면 된다.


gawk는 컴퓨터를 다루는 모든 업무분야에서 활용이 가능하다.

아는 만큼 응용해서 노가다성 업무를 효과적으로 처리할 수 있으니 gawk를 배우길 적극 추천한다.
전체 1

  • 2021-05-15 12:54
    gawk는 워낙 유명한 프로그램이므로 여기서는 기초적인 문법과 실무에서 사용한 예시 자료만 글로 남기고 자세한 사용법은 괜찮은 사이트의 링크를 댓글로 남긴다.
    https://mug896.github.io/awk-script/index.html