'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