linux gawk

현승빈·2023년 7월 29일

개요

'gawk'는 'awk' 유틸리티의 확장 버전입니다. 'gawk'로 알려진 'awk'의 GNU 구현은 추가 기능과 향상된 기능을 제공하여 텍스트 조작 및 데이터 추출 작업에 널리 사용됩니다.

gawk는 입력 텍스트를 한 줄씩 처리하고 데이터에서 발견된 패턴을 기반으로 특정 작업을 수행하는 규칙을 적용하여 작동합니다. 로그 파일, CSV 파일 및 기타 표 형식과 같은 구조화된 텍스트 데이터를 처리하는 데 특히 유용합니다.

다음은 gawk의 몇 가지 주요 특징과 기능입니다.


패턴 매칭 및 액션 블록: gawk는 패턴과 액션을 기반으로 데이터를 처리합니다. 
각 규칙은 패턴과 관련 작업으로 구성됩니다. 라인이 패턴과 일치하면 해당 동작이 실행됩니다. 
패턴이 제공되지 않으면 액션 블록이 모든 라인에 적용됩니다.

내장 변수: gawk는 입력 데이터, 처리 환경 등에 대한 정보를 보유하는 내장 변수 세트를 제공합니다. 
예를 들어 $0 변수는 전체 입력 라인을 나타내고 $1, $2 등은 입력 라인의 필드를 나타내며(기본적으로 공백으로 분할됨)
NF는 현재 라인의 필드 수를 저장합니다. , 'NR'은 현재 행 번호를 보유하는 식입니다.

정규 표현식: gawk는 강력한 정규 표현식을 지원하여 데이터 일치 및 조작을 위한 복잡한 패턴을 생성할 수 있습니다.

사용자 정의 함수: gawk에서 사용자 정의 함수를 정의하여 복잡한 작업을 캡슐화하고 스크립트의 여러 부분에서 코드를 재사용할 수 있습니다.

텍스트 조작: gawk를 사용하면 필드 내용 수정, 데이터 재정렬, 열 추가 또는 제거 등을 수행할 수 있어 데이터 정리 및 변환 작업에 적합합니다.

산술 및 문자열 연산: gawk를 사용하면 데이터에 대한 산술 및 문자열 연산을 수행할 수 있으므로 다양한 데이터 처리 요구 사항에 다용도로 사용할 수 있습니다.

입력/출력 제어: 입력 및 출력 필드 구분 기호를 지정하고, 출력 형식을 제어하고, 출력을 파일 또는 기타 명령으로 리디렉션할 수 있습니다.

제어 흐름: gawk는 if, else, while 및 for 루프와 같은 제어 흐름 구성을 제공하여 복잡한 데이터 처리 논리를 구축할 수 있도록 합니다.

다음은 gawk에 사용 예시입니다.

$ cat name_age.txt 
kim ji, 25
park kyu, 32
hyun seung, 30

## 기본적으로 구별되는 ' '으로 필드를 구분하여 첫번째 필드($1)를 출력합니다.
$ gawk '{print $1}' name_age.txt
kim
park
hyun
## 기본적으로 구별되는 ' '으로 필드를 구분하여 첫번째와 두번째 필드($1,2)를 출력합니다.
$ gawk '{print $1,$2}' name_age.txt
kim ji,
park kyu,
hyun seung,

## -F 특정 패턴을 사용해서 필드를 구별하고 출력 할 수 있습니다.
$ gawk -F ',' '{print $1,$2}' name_age.txt
kim ji  25
park kyu  32
hyun seung  30

$ cat name_pattern.gawk 
## gawk 스크립트안에 패턴을 사용하여 검색할 수 있습니다.
{ print $1}

$ gawk -f name_pattern.gawk name_age.txt
kim
park
hyun

$ gawk -F ',' -f name_pattern.gawk name_age.txt
kim ji
park kyu
hyun seung
profile
클라우드 엔지니어

0개의 댓글