AWK - 스 크 립 트 언어, 도구 설명 (GCC 내장, SQL 필드 구동 해석 텍스트 와 같 음)

awk 역사
AWK 는 우수한 텍스트 처리 도구 로 Linux 및 Unix 환경 에서 기 존의 기능 이 가장 강 한 데이터 처리 엔진 중 하나 이다.이러한 프로 그래 밍 과 데이터 조작 언어 (그 이름 은 창시자 인 Alfred Aho, Peter Weinberger 와 Brian Kernighan 성씨 의 첫 글자 에서 나 온 것) 의 가장 큰 기능 은 한 사람 이 가지 고 있 는 지식 에 달 려 있다.AWK 는 정규 표현 식 의 일치, 스타일 불 러 오기, 흐름 제어, 수학 연산 자, 프로 세 스 제어 문, 심지어 내 장 된 변수 와 함수 까지 매우 강력 한 기능 을 제공 합 니 다.그것 은 완전한 언어 가 가 져 야 할 거의 모든 아름 다운 특성 을 갖 추고 있다.실제로 AWK 는 자신의 언어 를 가지 고 있 습 니 다. AWK 프로 그래 밍 언어 입 니 다. 세 명의 작성 자 는 이 를 '스타일 스 캔 과 처리 언어' 로 정식 적 으로 정의 하 였 습 니 다.간단 한 프로그램 을 만 들 수 있 습 니 다. 이 프로그램 들 은 입력 파일 을 읽 고 데이터 정렬, 데 이 터 를 처리 하 며 입력 에 대한 계산 과 보고 서 를 만 들 수 있 습 니 다. 그리고 수많은 다른 기능 도 있 습 니 다.
가장 쉽게 말 하면 AWK 는 텍스트 를 처리 하 는 프로 그래 밍 언어 도구 이다.AWK 는 여러 가지 측면 에서 유 닉 스 셸 프로 그래 밍 언어 와 유사 하 다. 비록 AWK 는 그 자체 의 문법 을 가지 고 있 지만.그의 디자인 사상 은 SNOBOL 4, sed, Marc Rochkind 디자인 의 유효성 언어, 언어 도구 인 Ycc 와 lex 에서 기원 되 었 고 물론 C 언어 에서 우수한 사상 을 얻 었 다.처음에 AWK 를 만 들 었 을 때 그 목적 은 텍스트 처리 에 사용 되 었 고 이런 언어의 기 초 는 입력 데이터 에 패턴 이 일치 하면 일련의 명령 을 실행 하 는 것 이다.이 유 틸 리 티 도 구 는 파일 의 모든 줄 을 검색 하여 명령 줄 에 주어진 내용 과 일치 하 는 패턴 을 찾 습 니 다.일치 하 는 내용 을 발견 하면 다음 프로 그래 밍 절 차 를 진행 합 니 다.일치 하 는 내용 을 찾 지 못 하면 다음 줄 을 계속 처리 합 니 다.
비록 조작 이 매우 복잡 할 수 있 지만 명령 의 문법 은 항상 다음 과 같다.
awk '{pattern + action}' {filenames}












그 중에서 pattern 은 AWK 가 데이터 에서 찾 은 내용 을 나타 내 고 action 은 일치 하 는 내용 을 찾 을 때 실 행 된 일련의 명령 입 니 다.괄호 ({}) 는 프로그램 에서 항상 나타 날 필요 가 없 지만 특정한 패턴 에 따라 일련의 명령 을 그룹 으로 나 누 는 데 사 용 됩 니 다.pattern 은 정규 표현 식 을 나타 내 고 평행봉 으로 묶는다.
gawk 는 AWK 의 GNU 버 전 입 니 다.
일반적인 의미 의 텍스트 도구 나 프로 그래 밍 언어 가 하나의 파일 을 처리 하 는 단위 라면 awk 는 텍스트 프로세서 와 같 습 니 다. awk 는 입력 한 파일 을 받 은 다음 텍스트 의 문 자 를 처리 하고 출력 할 수 있 습 니 다.
 
awk  사용 설명
awk 언어의 가장 기본 적 인 기능 은 파일 이나 문자열 에서 지정 한 규칙 을 바탕 으로 정 보 를 탐색 하고 추출 하 는 것 입 니 다. awk 에서 정 보 를 추출 한 후에 야 다른 텍스트 작업 을 할 수 있 습 니 다.전체 awk 스 크 립 트 는 보통 텍스트 파일 의 정 보 를 포맷 하 는 데 사 용 됩 니 다.
일반적으로 awk 는 파일 의 행동 처리 단위 입 니 다.awk 는 파일 의 한 줄 을 받 지 않 고 해당 명령 을 실행 하여 텍스트 를 처리 합 니 다.
awk 호출
awk 를 호출 하 는 세 가지 방법 이 있 습 니 다.
첫째: 명령 행 방식
awk [-F  field-separator]  'commands'  input-file(s)
그 중에서 commands 는 진정한 awk 명령 이 고 [- F 역 구분자] 는 선택 할 수 있 습 니 다.input - file (s) 은 처리 해 야 할 파일 입 니 다.
awk 에서 파일 의 줄 마다 도 메 인 구분자 로 구 분 된 항목 을 도 메 인 이 라 고 합 니 다.일반적으로 - F 도 메 인 구분자 가 가리 키 지 않 은 상태 에서 기본 도 메 인 구분자 가 빈 칸 입 니 다.
예:
파일 의 한 줄 에 \ # 번 호 를 사용 하여 각 항목 의 분할 문자 로 사용 할 때 - F \ # 를 사용 하여 도 메 인 구분 자 를 \ # 로 지정 할 수 있 습 니 다.
awk -F # 'commands'  input-file(s)
그래서 텍스트 처 리 를 편리 하 게 했다.
두 번 째: 모든 awk 명령 을 파일 에 삽입 하고 awk 프로그램 을 실행 할 수 있 도록 한 다음 awk 명령 해석 기 를 스 크 립 트 의 첫 줄 로 하고 스 크 립 트 이름 을 입력 하여 호출 합 니 다.
셸 스 크 립 트 의 첫 줄 에 해당 하 는: \ #! /bin/sh
\ #! / 로 바 꿀 수 있 습 니 다.bin/awk
세 번 째 방법 은 모든 awk 명령 을 하나의 단독 파일 에 삽입 한 다음 호출 하 는 것 입 니 다.
awk -f awk-script-file input-file(s)
그 중에서 - f 옵션 은 awk - script - file 의 awk 스 크 립 트 를 불 러 옵 니 다. input - file (s) 은 위 와 같 습 니 다.
awk 기본 문법 특징
전통 awk 프로그램의 설정 은 다음 과 같 습 니 다.
pattern  {action}                         패턴 이 일치 하면 동작 을 수행 합 니 다.
pattern                                      패턴 이 일치 하면 기록 을 인쇄 합 니 다 (동작 이 지정 되 지 않 은 상태 에서 기본적으로 기록 을 인쇄 합 니 다)
            {action}                        패턴 이 없 으 면 모든 기록 에 대해 작업 을 수행 합 니 다.
모든 awk 문 구 는 패턴 과 동작 으로 구성 되 어 있다.awk 스 크 립 트 에 많은 문구 가 있 을 수 있 습 니 다. 패턴 부분 은 동작 이 트리거 와 트리거 이 벤트 를 결정 합 니 다.처 리 는 바로 데 이 터 를 조작 하 는 것 이다.모드 부분 을 생략 하면 동작 은 항상 실행 상 태 를 유지 합 니 다. 즉, 모드 부분 이 생략 되면 조작 은 모든 기록 에 대해 무조건 실 행 됩 니 다.
awk 구문 에 서 는 정규 표현 식 을 / · · · / 로 정의 하고 '작은 따옴표 로 경 계 를 정 하 며 실제 동작 은 대괄호 {} 에서 가리 킵 니 다.보통 '{action 1; action 2}', {} 에 print 와 같은 여러 개의 문구 가 있 으 면  if  그리고 할당, 등 은 반드시 분점 을 사용 해 야 합 니 다.간격 을 두 고 빈 칸 을 구문 동작 구분자 로 할 수 없습니다.
패턴 은 모든 조건문 이나 부합 문 또는 정규 표현 식 일 수 있 습 니 다.패턴 은 두 개의 특수 필드 를 포함한다.  비 건 이랑 엔 드.BEGIN 문 구 는 모든 텍스트 탐색 동작 에 사용 되 기 전에 텍스트 탐색 동작 은 입력 텍스트 에 따라 실 행 됩 니 다.END 문 구 는 awk 에서 텍스트 탐색 동작 을 완성 한 후에 실행 하 는 데 사 용 됩 니 다.기본적으로 awk 는 항상 줄 수 와 일치 하거나 인쇄 합 니 다.
awk 파일 기록 읽 기 방식
awk 는 파일 에서 한 줄 을 읽 을 때마다 도 메 인 구분자 (여 기 는 \ #) 를 찾 아 도 메 인 n 을 설정 합 니 다. 새 줄 (여 기 는 결 성 된 기록 구분자 줄 바 꿈) 까지 이 줄 을 기록 으로 나 눈 다음 awk 에서 다음 줄 읽 기 프로 세 스 를 다시 시작 합 니 다.
                                                             test - file 파일
 
도 메 인 1                       도 메 인 구분자        도 메 인 2        도 메 인 구분자          도 메 인 3         도 메 인 구분자             도 메 인 4 및 줄 바 꾸 기
 
(기록 1) feyinzi          #            200705         #                 24          #                      여자. 
 
(기록 2) feyinzilgd      #            200706         #                 27          #                      남자.  
 
그러면 awk 작업 절 차 는 다음 과 같 습 니 다. 먼저 BEGING 을 실행 한 다음 에 파일 을 탐색 하고 줄 바 꿈 문자 로 분 단 된 기록 을 읽 은 다음 에 기록 을 지정 한 \ # 도 메 인 구분자 에 따라 도 메 인 을 나 누고 도 메 인 $n 을 채 웁 니 다. 그러면 여기 대응 하 는 feyinzi 는 $1 이 고 200705 는 도 메 인 $2 · · · · · · · · 1 차 유추 한 다음 에 $0 은 모든 도 메 인 을 표시 합 니 다.그리고 모드 에 대응 하 는 동작 action 을 실행 한 다음 에 두 번 째 기록 을 읽 기 시 작 했 습 니 다.
규칙:
모든 기록 의 이름 을 인쇄 하려 면 명령 을 사용 할 수 있 습 니 다.
awk - F \ # '{print $1}' test - file 실행 결 과 는 다음 과 같 습 니 다: feiyinzi feiyinzilgd
일반적으로 BEGIN 을 사용 하여 보고서 헤드 를 인쇄 할 수 있 으 며, END 는 보고서 끝 을 인쇄 할 수 있 습 니 다.
awk - F \ # 'BEGIN {print "Name -------------"} {print $1} END {print "end of file"} 의 실행 결 과 는 다음 과 같다.
awk 의 패턴 일치 에서 정규 표현 식 의 기본 규칙 은 변 하지 않 습 니 다.
awk 내장 변수
awk 에는 환경 정 보 를 설정 하 는 데 사용 되 는 많은 내 장 된 변수 가 있 습 니 다. 이 변 수 는 변 경 될 수 있 습 니 다. 다음 표 에서 가장 자주 사용 하 는 변 수 를 보 여 줍 니 다.
 
               ARGC                                   명령 행 매개 변수 개수
               ARGV                                   명령 행 매개 변수 배열
               ENVIRON                             대기 열 에서 시스템 환경 변수 사용 지원
               FILENAME                            awk 탐색 파일 이름
               FNR                                     파일 탐색 기록 수
               FS                                       입력 필드 구분 자 를 설정 합 니 다. 명령 행 - F 옵션 과 같 습 니 다.
               NF                                       기 록 된 필드 의 개 수 를 탐색 합 니 다.
               NR                                       읽 은 기록 수
               OFS                                     출력 영역 구분자
               ORS                                     출력 기록 구분자
               RS                                       제어 레코드 구분자
 
이 변수 설정 에 {} 안에 넣 고 분점 을 사용 할 수 있 습 니 다.다른 조작 과 분리 하 다.
실제 운용 에서 이런 변 수 를 적당 하고 합 리 적 으로 사용 하 는 것 은 매우 유용 하 다.

좋은 웹페이지 즐겨찾기