gawk - 클라우드에서 온라인으로

Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 제공업체에서 실행할 수 있는 gawk 명령입니다.

프로그램:

이름


gawk - 패턴 스캐닝 및 처리 언어

개요


둔한 사람 [ POSIX 또는 GNU 스타일 옵션 ] -f 프로그램 파일 [ -- ] 파일 ...
둔한 사람 [ POSIX 또는 GNU 스타일 옵션 ] [ -- ] 프로그램 텍스트 파일 ...

기술


둔한 사람 GNU 프로젝트의 AWK 프로그래밍 언어 구현입니다. 그것은 준수
POSIX 1003.1 표준의 언어 정의. 이 버전은 차례로
의 설명을 기반으로 XNUMXD덴탈의 AWK 프로그램 작성 지원하는 언어, Aho, Kernighan 및
와인버거. 둔한 사람 현재 버전의 Brian에 있는 추가 기능을 제공합니다.
커니건의 AWK 다양한 GNU 관련 확장 기능이 있습니다.

명령줄은 다음 옵션으로 구성됩니다. 둔한 사람 자체, AWK 프로그램 텍스트(제공되지 않은 경우
를 통해 -f or --파일 옵션) 및 값을 ARGCARRGV 사전
정의된 AWK 변수.

인셀덤 공식 판매점인 둔한 사람 와 함께 호출됩니다. --프로필 옵션을 선택하면 프로파일링 통계 수집을 시작합니다.
프로그램 실행부터. 둔한 사람 이 모드에서는 더 느리게 실행되며 자동으로
파일에 실행 프로필 생성 awkprof.out 완료되면. 참조 --프로필
옵션, 아래.

둔한 사람 통합 디버거도 있습니다. 대화형 디버깅 세션은 다음과 같이 시작할 수 있습니다.
공급 -디버그 명령줄에 대한 옵션입니다. 이 실행 모드에서 둔한 사람 잔뜩
AWK 소스 코드를 확인한 다음 디버깅 명령을 묻는 메시지를 표시합니다. 둔한 사람 AWK만 디버깅 가능
함께 제공되는 프로그램 소스 -f 옵션. 디버거는 다음 문서에 설명되어 있습니다. 둔한 사람: 유효한
AWK 프로그램 작성.

OPTION FORMAT


둔한 사람 옵션은 전통적인 POSIX 스타일의 한 글자 옵션이거나 GNU 스타일의 long일 수 있습니다.
옵션. POSIX 옵션은 단일 "-"로 시작하고 긴 옵션은 "--"로 시작합니다. 긴
옵션은 GNU 특정 기능과 POSIX 필수 기능 모두에 대해 제공됩니다.

둔한 사람- 특정 옵션은 일반적으로 긴 옵션 형식으로 사용됩니다. 긴 옵션에 대한 인수
에 의해 옵션과 결합됩니다. = 사이에 공백이 없는 기호 또는
다음 명령줄 인수에 제공됩니다. 긴 옵션은 축약될 수 있습니다.
약어는 고유하게 유지됩니다.

또한 모든 긴 옵션에는 해당하는 짧은 옵션이 있으므로 옵션의
기능은 내부에서 사용할 수 있습니다. #! 실행 가능한 스크립트.

옵션


둔한 사람 다음 옵션을 허용합니다. 표준 옵션이 먼저 나열되고 다음에 나열됩니다.
옵션 둔한 사람 짧은 옵션으로 알파벳순으로 나열된 확장자.

-f 프로그램 파일
--파일 프로그램 파일
파일에서 AWK 프로그램 소스 읽기 프로그램 파일, 처음부터 대신
명령줄 인수. 다수의 -f (또는 --파일) 옵션을 사용할 수 있습니다.

-F fs
--필드 구분자 fs
fs 입력 필드 구분 기호( FS 미리 정의된 변수).

-v 였다=
--양수인 였다=
값 할당 변수에 였다, 프로그램 실행이 시작되기 전에.
이러한 변수 값은 다음에서 사용할 수 있습니다. BEGIN AWK 프로그램의 규칙.

-b
--문자를 바이트로
모든 입력 데이터를 XNUMX바이트 문자로 처리합니다. 즉, 지불하지 마십시오.
문자열을 멀티바이트로 처리하려고 할 때 로케일 정보에 주의하십시오.
문자. 그만큼 --포식스 옵션이 이 옵션보다 우선합니다.

-c
--전통적인
실행 호환성 방법. 호환성 모드에서 둔한 사람 동일하게 동작
브라이언 커니건의 AWK; GNU 특정 확장은 인식되지 않습니다. 보다 GNU
확장자세한 내용은 아래를 참조하십시오.

-C
--저작권
GNU 저작권 정보 메시지의 짧은 버전을 표준에 인쇄하십시오.
성공적으로 출력하고 종료합니다.

-d[파일]
--덤프 변수[=파일]
전역 변수, 해당 유형 및 최종 값의 정렬된 목록을 인쇄합니다. 파일. 면
아니 파일 제공됩니다 둔한 사람 라는 파일을 사용 awkvars.out 현재 디렉토리에서.
모든 전역 변수 목록을 갖는 것은 타이포그래피를 찾는 좋은 방법입니다.
프로그램의 오류. 큰 파일이 있는 경우에도 이 옵션을 사용합니다.
함수가 많은 프로그램을 만들고 함수가
실수로 로컬 변수를 사용하려는 전역 변수를 사용합니다. (이것은
다음과 같은 간단한 변수 이름으로 특히 쉽게 실수할 수 있습니다. i, j, 등등.)

-D[파일]
-디버그[=파일]
AWK 프로그램의 디버깅을 활성화합니다. 기본적으로 디버거는 명령을 읽습니다.
키보드에서 대화식으로(표준 입력). 옵션 파일 논의
디버거가 실행하지 않는 명령 목록이 있는 파일을 지정합니다.
대화식으로.

-e 프로그램 텍스트
--원천 프로그램 텍스트
프로그램 텍스트 AWK 프로그램 소스 코드로. 이 옵션을 사용하면
라이브러리 함수의 혼합( -f--파일 옵션) 소스 포함
명령줄에 입력된 코드입니다. 주로 중대형 AWK용입니다.
쉘 스크립트에서 사용되는 프로그램.

-E 파일
--exec 파일
유사하게 -f그러나 이 옵션은 마지막으로 처리되는 옵션입니다. 이것은
함께 사용 #! 전달을 피하기 위해 특히 CGI 응용 프로그램의 스크립트
URL의 명령줄에 있는 옵션 또는 소스 코드(!). 이 옵션은
명령줄 변수 할당.

-g
--gen-pot
AWK 프로그램을 스캔 및 구문 분석하고 GNU를 생성합니다. .냄비 (이동식 객체 템플릿)
지역화할 수 있는 모든 문자열에 대한 항목이 포함된 표준 출력의 형식 파일
프로그램. 프로그램 자체는 실행되지 않습니다. GNU 참조 gettext를 배포
자세한 정보 .냄비 파일.

-h
--도움 표준 출력에 사용 가능한 옵션에 대한 비교적 짧은 요약을 인쇄합니다.
(당 GNU 코딩 표준 시편, 이러한 옵션을 사용하면 즉시 성공적으로 종료됩니다.)

-i 포함 파일
--포함하다 포함 파일
awk 소스 라이브러리를 로드합니다. 이것은 다음을 사용하여 라이브러리를 검색합니다. AWKPATH
환경 변수. 초기 검색에 실패하면 다시 시도합니다.
를 추가한 후 .awk 접미사. 파일은 한 번만 로드됩니다(즉,
중복이 제거됨) 코드가 주 프로그램을 구성하지 않음
출처.

-l lib
--짐 lib
공유 라이브러리 로드 lib. 이것은 다음을 사용하여 라이브러리를 검색합니다. AWKLIBPATH
환경 변수. 초기 검색에 실패하면 다시 시도합니다.
플랫폼의 기본 공유 라이브러리 접미사를 추가한 후. 도서관
초기화 루틴의 이름이 지정되어야 합니다. dl_로드().

-L [가치]
--린트[=가치]
의심스럽거나 다른 AWK로 이식할 수 없는 구성에 대한 경고를 제공합니다.
구현. 선택적 인수로 치명적인, 린트 경고가 치명적이 됨
오류. 이것은 과감할 수 있지만, 그것의 사용은 확실히 개발을 장려할 것입니다.
더 깨끗한 AWK 프로그램. 선택적 인수로 무효의에 대한 경고만
실제로 유효하지 않은 것이 발행됩니다. (아직 완전히 구현된 것은 아닙니다.)

-M
--비그넘
숫자에 임의 정밀도 산술을 적용합니다. 이 옵션은 다음과 같은 경우에는 효과가 없습니다. 둔한 사람
GNU MPFR 및 MP 라이브러리를 사용하도록 컴파일되지 않았습니다.

-n
--십진수가 아닌 데이터
입력 데이터에서 XNUMX진수 및 XNUMX진수 값을 인식합니다. 선택권
주의!

-N
--use-lc-숫자
이 힘 둔한 사람 입력을 구문 분석할 때 로케일의 소수점 문자를 사용하려면
데이터. POSIX 표준은 이 동작을 요구하지만 둔한 사람 할 때 그렇게 한다
--포식스 가 유효한 경우 기본값은 전통적인 동작을 따르고
마침표가 소수점이 아닌 로케일에서도 마침표를 소수점으로 사용
포인트 캐릭터. 이 옵션은 전체 설정 없이 기본 동작을 재정의합니다.
가혹한 엄격함 --포식스 옵션을 선택합니다.

-o[파일]
--예쁜 인쇄[=파일]
프로그램의 예쁘게 인쇄된 버전을 다음으로 출력 파일. 아니라면 파일 제공됩니다
둔한 사람 라는 파일을 사용 awkprof.out 현재 디렉토리에서.

-O
--최적화
프로그램의 내부 표현에 따라 최적화를 활성화합니다. 현재,
여기에는 간단한 상수 접기 및 재귀를 위한 꼬리 호출 제거가 포함됩니다.
기능. 그만큼 둔한 사람 관리자는 시간이 지남에 따라 추가 최적화를 추가하기를 희망합니다.

-p[프로필 파일]
--프로필[=프로필 파일]
프로파일링 세션을 시작하고 프로파일링 데이터를 프로필 파일. 기본값
is awkprof.out. 프로필에는 각 명령문의 실행 횟수가 포함되어 있습니다.
각 사용자 정의 함수에 대한 왼쪽 여백 및 함수 호출 횟수의 프로그램.

-P
--포식스
이 켜집니다 호환성 다음과 같은 추가 제한 사항이 있는 모드:

· \x 이스케이프 시퀀스는 인식되지 않습니다.

· 다음과 같은 경우 공백과 탭만 필드 구분 기호로 사용됩니다. FS 단일 공간으로 설정되며,
개행은 그렇지 않습니다.

· 다음에 줄을 계속할 수 없습니다. ?:.

· 동의어 펑크 키워드에 대한 기능 인식되지 않습니다.

· 운영자 ****= 대신 사용할 수 없습니다 ^^=.

-r
--재간격
사용 가능 간격 표현 정규식 일치에서(참조 정규병
, 아래에). 간격 표현은 전통적으로
AWK 언어. POSIX 표준은 그것들을 추가하여 AWK이그렙 ~와 일치하는
서로. 기본적으로 활성화되어 있지만 이 옵션은 계속 사용됩니다.
--전통적인.

-S
--모래 상자
실행 둔한 사람 샌드박스 모드에서 체계() 함수, 입력 리디렉션
Getline, 출력 리디렉션 인쇄printf, 동적 확장 프로그램을 로드합니다.
명령 실행(파이프라인을 통한)도 비활성화됩니다. 이것은 효과적으로
스크립트가 로컬 리소스에 액세스하지 못하도록 합니다(단,
명령줄).

-t
-- 보푸라기 오래된
원본 버전으로 이식할 수 없는 구문에 대한 경고를 제공합니다.
UNIX AWK.

-V
--번역
이 특정 복사본에 대한 버전 정보 인쇄 둔한 사람 표준 출력에서.
이것은 주로 현재 복사본이 둔한 사람 시스템이 켜져 있습니다
자유 소프트웨어 재단이 배포하는 모든 것과 관련하여 지금까지.
이는 버그를 보고할 때도 유용합니다. (당 GNU 코딩 표준 시편
옵션을 사용하면 즉시 성공적으로 종료됩니다.)

-- 옵션의 끝을 알립니다. 이는 AWK에 추가 인수를 허용하는 데 유용합니다.
"-"로 시작하도록 프로그래밍합니다. 이것은 인수와 일관성을 제공합니다
대부분의 다른 POSIX 프로그램에서 사용하는 구문 분석 규칙입니다.

호환 모드에서 다른 모든 옵션은 유효하지 않은 것으로 표시되지만 그렇지 않은 경우
무시했다. 정상적인 작동에서 프로그램 텍스트가 제공되는 한 알 수 없는 옵션
에서 AWK 프로그램으로 전달됩니다. ARRGV 처리를 위한 배열. 이것은 특히
"#!"을 통해 AWK 프로그램을 실행하는 데 유용합니다. 실행 가능한 인터프리터 메커니즘.

POSIX 호환성을 위해 -W 옵션을 사용할 수 있으며 그 뒤에 긴 옵션의 이름이 옵니다.

AWK 프로그램 실행


AWK 프로그램은 일련의 패턴-액션 문과 선택적 함수로 구성됩니다.
정의.

@포함하다 "파일 이름"
@짐 "파일 이름"
무늬 { 동작 }
기능 name(매개 변수 명부) { }

둔한 사람 먼저 프로그램 소스를 읽습니다. 프로그램 파일(s) 지정된 경우 인수에서
--원천, 또는 명령줄의 첫 번째 옵션이 아닌 인수에서. 그만큼 -f
--원천 옵션은 명령줄에서 여러 번 사용할 수 있습니다. 둔한 사람 프로그램을 읽는다
마치 모든 프로그램 파일s 및 명령줄 소스 텍스트가 연결되었습니다.
함께. 이것은 AWK 기능의 라이브러리를 구축하는 데 유용합니다.
그것들을 사용하는 각각의 새로운 AWK 프로그램에 그것들을 포함시키십시오. 또한 혼합 기능을 제공합니다.
명령줄 프로그램을 사용하는 라이브러리 기능.

또한 다음으로 시작하는 줄은 @포함하다 다른 소스 파일을 포함하는 데 사용할 수 있습니다.
라이브러리를 더욱 쉽게 사용할 수 있습니다. 이는 다음을 사용하는 것과 같습니다. -i 옵션을 선택합니다.

로 시작하는 줄 @짐 프로그램에 공유 라이브러리를 로드하는 데 사용할 수 있습니다. 이것
를 사용하는 것과 같습니다. -l 옵션을 선택합니다.

환경 변수 AWKPATH 소스 파일을 찾을 때 사용할 검색 경로를 지정합니다.
로 명명 -f-i 옵션. 이 변수가 존재하지 않는 경우 기본 경로는
".:/usr/local/share/awk". (실제 디렉토리는 방법에 따라 다를 수 있습니다. 둔한 사람 였다
빌드 및 설치됩니다.) -f 옵션에 "/" 문자가 포함되어 있습니다.
경로 검색이 수행됩니다.

환경 변수 AWKLIBPATH 소스를 찾을 때 사용할 검색 경로를 지정합니다.
로 명명된 파일 -l 옵션. 이 변수가 존재하지 않는 경우 기본 경로는
"/usr/local/lib/gawk". (실제 디렉토리는 방법에 따라 다를 수 있습니다. 둔한 사람 지어졌다
그리고 설치했습니다.)

둔한 사람 다음 순서로 AWK 프로그램을 실행합니다. 첫째, 모든 변수 할당
를 통해 지정된 -v 옵션이 수행됩니다. 다음, 둔한 사람 프로그램을
내부 형태. 그 다음에, 둔한 사람 에서 코드를 실행합니다. BEGIN 규칙(들)(있는 경우), 그리고 나서
에 이름이 지정된 각 파일 읽기를 진행합니다. ARRGV 어레이(최대 ARGV[ARGC]). 없는 경우
명령줄에 이름이 지정된 파일, 둔한 사람 표준 입력을 읽습니다.

명령줄의 파일 이름이 다음 형식인 경우 였다= 변수로 취급
과제. 변수 였다 값이 할당됩니다 . (이것은 모든 후에 발생합니다.
BEGIN 규칙이 실행되었습니다.) 명령줄 변수 할당은 다음에 가장 유용합니다.
AWK가 입력이 분할되는 방식을 제어하는 ​​데 사용하는 변수에 값을 동적으로 할당
필드 및 레코드. 여러 패스가 필요한 경우 상태를 제어하는 ​​데에도 유용합니다.
단일 데이터 파일을 통해.

특정 요소의 값이 ARRGV 비었다 (""), 둔한 사람 건너뜁니다.

각 입력 파일에 대해 시작 파일 규칙이 존재하며, 둔한 사람 이전에 관련 코드를 실행합니다.
파일의 내용을 처리합니다. 비슷하게, 둔한 사람 관련된 코드를 실행합니다.
최종 파일 파일을 처리한 후.

입력의 각 레코드에 대해 둔한 사람 일치하는지 테스트 무늬 AWK에서
프로그램. 레코드가 일치하는 각 패턴에 대해 둔한 사람 관련된 실행 동작.
패턴은 프로그램에서 발생하는 순서대로 테스트됩니다.

마지막으로 모든 입력이 소진된 후, 둔한 사람 에서 코드를 실행합니다. END 규칙(들)(만약
어느).

명령 라인 디렉토리
POSIX에 따르면, AWK 명령줄은 텍스트 파일이어야 합니다. 그 행동
그렇지 않은 경우 ``정의되지 않음''입니다. 대부분의 버전 AWK 명령에서 디렉토리 처리
치명적인 오류로 라인.

4.0 버전부터 둔한 사람, 명령줄의 디렉터리는 경고를 생성하지만
그렇지 않으면 건너뜁니다. 다음 중 하나인 경우 --포식스 or --전통적인 옵션이 주어지면
둔한 사람 명령줄의 디렉터리를 치명적 오류로 처리하는 것으로 되돌아갑니다.

변수, 기록 전지


AWK 변수는 동적입니다. 그들은 처음 사용될 때 존재합니다. 그들의
값은 부동 소수점 숫자 또는 문자열이거나 둘 다입니다.
사용된. AWK에는 XNUMX차원 배열도 있습니다. 여러 차원의 배열은 다음과 같을 수 있습니다.
시뮬레이션. 둔한 사람 진정한 배열 배열을 제공합니다. 보다 배열, 아래에. 미리 정의된 여러 가지
변수는 프로그램이 실행될 때 설정됩니다. 이들은 필요에 따라 설명되고 아래에 요약되어 있습니다.

기록
일반적으로 레코드는 개행 문자로 구분됩니다. 기록 방법을 제어할 수 있습니다.
내장 변수에 값을 할당하여 구분 RS. 면 RS 단일 문자입니다.
그 문자는 레코드를 구분합니다. 그렇지 않으면, RS 정규 표현식입니다. 텍스트
이 정규식과 일치하는 입력은 레코드를 구분합니다. 그러나,
호환성 모드에서는 문자열 값의 첫 번째 문자만 구분에 사용됩니다.
기록. 만약에 RS null 문자열로 설정되면 레코드는 빈 줄로 구분됩니다.
인셀덤 공식 판매점인 RS null 문자열로 설정되면 개행 문자는 항상 필드 구분 기호 역할을 합니다.
어떤 가치 외에도 FS 할 수 있습니다.

Fields
각 입력 레코드를 읽을 때마다 둔한 사람 로 레코드를 나눕니다. 분야, 의 값을 사용하여
FS 필드 구분 기호로 변수. 만약에 FS 는 단일 문자이고 필드는 다음으로 구분됩니다.
그 캐릭터. 만약에 FS null 문자열이면 각 개별 문자는
별도의 필드. 그렇지 않으면, FS 완전한 정규식이 될 것으로 예상됩니다. 에서
특별한 경우 FS 단일 공백이며 필드는 공백 및/또는 탭 실행으로 구분됩니다.
및/또는 개행. (그러나 섹션을 참조하십시오 POSIX 호환성아래). 주의사항: 의 가치
대소문자 무시 (아래 참조) 또한 언제 필드가 분할되는지에 영향을 미칩니다. FS 정규식이며,
그리고 언제 레코드가 분리되는지 RS 정규식입니다.

경우 필드폭 변수는 공백으로 구분된 숫자 목록으로 설정되며 각 필드는
고정 폭을 가질 것으로 예상되며, 둔한 사람 지정된 너비를 사용하여 레코드를 분할합니다.
의 가치 FS 무시됩니다. 에 새 값 할당 FS or FPAT 사용을 재정의합니다.
필드폭.

마찬가지로, FPAT 변수는 정규식을 나타내는 문자열로 설정되며 각각
필드는 해당 정규식과 일치하는 텍스트로 구성됩니다. 이 경우 정규
표현식은 필드를 구분하는 텍스트 대신 필드 자체를 설명합니다.
에 새 값 할당 FS or 필드폭 사용을 재정의합니다. FPAT.

입력 레코드의 각 필드는 해당 위치로 참조될 수 있습니다. $1, $2, 등등. $0
전체 기록입니다. 필드는 상수로 참조할 필요가 없습니다.

n = 5
인쇄 $n

입력 레코드의 다섯 번째 필드를 인쇄합니다.

변수 NF 입력 레코드의 총 필드 수로 설정됩니다.

존재하지 않는 필드에 대한 참조(즉, 다음 필드 $NF) null 문자열을 생성합니다.
그러나 존재하지 않는 필드(예: $(NF+2) = 5) 값을 증가시킵니다. NF,
null 문자열을 값으로 사용하는 중간 필드를 생성하고 값을 발생시킵니다.
of $0 필드가 다음 값으로 구분되어 다시 계산됩니다. FSO. 참조
음수 필드로 변경하면 치명적인 오류가 발생합니다. 감소 NF 의 값을 유발합니다.
손실될 새 값을 지난 필드와 $0 다시 계산할
값으로 구분되는 필드 FSO.

기존 필드에 값을 할당하면 다음과 같은 경우 전체 레코드가 다시 작성됩니다. $0 is
참조. 마찬가지로 값을 할당합니다. $0 레코드가 다시 분할되어 생성됩니다.
필드의 새 값.

내장 변수
둔한 사람의 내장 변수는 다음과 같습니다.

ARGC 명령줄 인수의 수(옵션을 포함하지 않음 둔한 사람, 또는
프로그램 소스).

아르진드 의 인덱스 ARRGV 처리 중인 현재 파일의

ARRGV 명령줄 인수의 배열입니다. 배열은 0부터 ARGC - 1.
내용을 동적으로 변경 ARRGV 데이터에 사용되는 파일을 제어할 수 있습니다.

빈모드 비 POSIX 시스템에서 모든 파일 I/O에 대해 "바이너리" 모드 사용을 지정합니다.
1, 2 또는 3의 숫자 값은 입력 파일, 출력 파일 또는 모두를 지정합니다.
파일은 각각 바이너리 I/O를 사용해야 합니다. 문자열 값 "아르 자형""우"
입력 파일 또는 출력 파일이 각각 바이너리를 사용하도록 지정
I/O. 문자열 값 "rw" or "wr" 모든 파일이 바이너리를 사용하도록 지정
I/O. 다른 모든 문자열 값은 다음과 같이 처리됩니다. "rw", 그러나 경고를 생성합니다
메시지.

CONVFMT 숫자의 변환 형식, "%.6g", 기본적으로.

환경 현재 환경의 값을 포함하는 배열입니다. 배열은
환경 변수에 의해 인덱싱되며 각 요소는 해당 값입니다.
변수(예: 환경["집"] 수 있습니다 "/홈/아놀드"). 이 배열 변경
프로그램이 보는 환경에 영향을 미치지 않습니다. 둔한 사람 통해 산란
리디렉션 또는 체계() 기능.

에르노 시스템 오류가 발생하면 리디렉션을 수행하거나 Getline, 읽는 동안
for Getline또는 동안 닫기()다음, 에르노 설명하는 문자열을 포함합니다.
오류. 이 값은 영어가 아닌 로케일로 번역될 수 있습니다.

필드폭 공백으로 구분된 필드 너비 목록입니다. 설정할 때, 둔한 사람 입력을 구문 분석
값을 사용하는 대신 고정 너비의 필드로 FS 변수
필드 구분자. 보다 Fields위에.

파일 이름 현재 입력 파일의 이름입니다. 명령에 파일이 지정되지 않은 경우
선, 값 파일 이름 이다 "-". 하지만, 파일 이름 내부에 정의되지 않은
BEGIN 규칙(에 의해 설정되지 않는 한 Getline).

FNR 현재 입력 파일의 입력 레코드 번호입니다.

FPAT 레코드의 필드 내용을 설명하는 정규식입니다. 언제
세트, 둔한 사람 필드가 일반과 일치하는 필드로 입력을 구문 분석합니다.
의 값을 사용하는 대신 FS 필드로 변수
분리 기호. 보다 Fields위에.

FS 기본적으로 공백인 입력 필드 구분 기호입니다. 보다 Fields위에.

기능 탭 인덱스와 해당 값이 모든 사용자의 이름인 배열
프로그램에서 정의되거나 확장 기능. 주의사항: 사용할 수 없습니다.
삭제 성명서 기능 탭 정렬.

대소문자 무시 모든 정규식 및 문자열 연산의 대소문자 구분을 제어합니다.
If 대소문자 무시 XNUMX이 아닌 값을 가진 다음 문자열 비교 및 ​​패턴
규칙에서 일치, 필드 분할 FSFPAT, 레코드 분리
RS, 다음과 일치하는 정규식 ~!~젠섭(), gsub(),
인덱스(), 성냥(), 패트 스플릿(), 스플릿()보결() 내장 함수 모두 무시
정규 표현식 작업을 수행하는 경우. 주의사항: 배열 첨자는
지원 체하는. 그러나, 그 asort ()분류() 기능이 영향을 받습니다.
따라서 대소문자 무시 XNUMX이 아닙니다. /aB/ 모든 문자열과 일치
"아", "에이비", "아브""AB". 모든 AWK 변수와 마찬가지로 초기값은
대소문자 무시 가 XNUMX이므로 모든 정규식 및 문자열 연산은
일반적으로 대소문자를 구분합니다.

린트 동적 제어를 제공합니다. --린트 AWK 프로그램 내에서 옵션.
사실일 때, 둔한 사람 린트 경고를 인쇄합니다. 거짓이면 그렇지 않습니다. 배정된 경우
문자열 값 "치명적인", lint 경고는 다음과 같이 치명적인 오류가 됩니다.
--린트=치명적. 다른 참 값은 경고만 출력합니다.

NF 현재 입력 레코드의 필드 수입니다.

NR 지금까지 본 입력 레코드의 총 수입니다.

OFMT 숫자의 출력 형식, "%.6g", 기본적으로.

FSO 출력 필드 구분 기호는 기본적으로 공백입니다.

ORS 출력 레코드 구분 기호는 기본적으로 개행입니다.

PREC 임의 정밀도 부동 소수점 숫자의 작동 정밀도, 53 by
태만.

프로신포 이 배열의 요소는 실행 중인 AWK에 대한 정보에 대한 액세스를 제공합니다.
프로그램. 일부 시스템에서는 배열에 요소가 있을 수 있습니다. "그룹1"
을 통하여 "그룹n" 일부 n, 이는 보충 그룹의 수입니다.
프로세스가 있습니다. 사용 in 연산자를 사용하여 이러한 요소를 테스트합니다. 그만큼
다음 요소를 사용할 수 있습니다.

PROCINFO["egid"] 의 가치 getegid(2) 시스템 호출.

PROCINFO["strftime"]
에 대한 기본 시간 형식 문자열 strftime ().

PROCINFO["유이드"] 의 가치 게투이드(2) 시스템 호출.

PROCINFO["FS"] "FS" if 필드 분할 FS 시행되고 있으며, "FPAT" if
필드 분할 FPAT 효력이 발생하거나 "필드 너비"
if 필드 분할 필드폭 유효합니다.

PROCINFO["식별자"]
사용된 모든 식별자의 이름으로 인덱싱된 하위 배열
AWK 프로그램의 텍스트에서. 값은 무엇을 나타냅니다.
둔한 사람 완료된 후 식별자에 대해 알고 있습니다.
프로그램 파싱; 그들은 지원 동안 업데이트
프로그램이 실행됩니다. 각 식별자의 값은
요소는 다음 중 하나입니다.

"정렬"
식별자는 배열입니다.

"내장"
식별자는 내장 함수입니다.

"확대"
식별자는 다음을 통해 로드된 확장 기능입니다.
@짐 or -l.

"스칼라"
식별자는 스칼라입니다.

"유형이 지정되지 않은"
식별자는 유형이 없습니다(
스칼라 또는 배열, 둔한 사람 아직 모른다).

"사용자" 식별자는 사용자 정의 함수입니다.

PROCINFO["gid"] 의 가치 당황하다(2) 시스템 호출.

PROCINFO["pgrpid"] 현재 프로세스의 프로세스 그룹 ID입니다.

PROCINFO["pid"] 현재 프로세스의 프로세스 ID입니다.

PROCINFO["ppid"] 현재 프로세스의 상위 프로세스 ID입니다.

PROCINFO["유체"] 의 가치 게투이드(2) 시스템 호출.

PROCINFO["정렬된_인"]
이 요소가 존재하는 경우 프로신포, 그 값
배열 요소가 순회되는 순서를 제어합니다.
in for 루프. 지원되는 값은 "@ind_str_asc",
"@ind_num_asc", "@val_type_asc", "@val_str_asc",
"@val_num_asc", "@ind_str_desc", "@ind_num_desc",
"@val_type_desc", "@val_str_desc", "@val_num_desc"
"@정렬되지 않음". 값은 또한 임의의 이름이 될 수 있습니다.
다음과 같이 정의된 비교 함수:

기능 cmp_func(i1, v1, 아이2, v2)

어디에 i1i2 지수이고, v1v2 있는
비교되는 두 요소의 해당 값.
보다 작거나 같거나 큰 숫자를 반환해야 합니다.
배열의 요소가 어떻게 되는지에 따라 0보다
주문하십시오.

PROCINFO["입력", "READ_TIMEOUT"]
데이터를 읽기 위한 시간 제한(밀리초) 입력,
어디에 입력 리디렉션 문자열 또는 파일 이름입니다. 가치
XNUMX 또는 XNUMX 미만은 시간 초과가 없음을 의미합니다.

PROCINFO["mpfr_버전"]
임의에 사용되는 GNU MPFR 라이브러리의 버전
정밀도 숫자 지원 둔한 사람. 이 항목은
MPFR 지원이 다음으로 컴파일되지 않은 경우 존재 둔한 사람.

PROCINFO["gmp_버전"]
임의에 사용되는 GNU MP 라이브러리의 버전
정밀도 숫자 지원 둔한 사람. 이 항목은
MPFR 지원이 다음으로 컴파일되지 않은 경우 존재 둔한 사람.

PROCINFO["prec_max"]
GNU MPFR 라이브러리가 지원하는 최대 정밀도
임의 정밀도 부동 소수점 숫자의 경우. 이것
MPFR 지원이 컴파일되지 않은 경우 항목이 존재하지 않습니다.
둔한 사람.

PROCINFO["prec_min"]
GNU MPFR 라이브러리가 허용하는 최소 정밀도
임의 정밀도 부동 소수점 숫자. 이 항목은
MPFR 지원이 다음으로 컴파일되지 않으면 존재하지 않습니다. 둔한 사람.

PROCINFO["api_major"]
확장 API의 주 버전입니다. 이 항목은
동적 확장을 로드할 수 없는 경우 표시됩니다.

PROCINFO["api_minor"]
확장 API의 마이너 버전입니다. 이 항목은
동적 확장을 로드할 수 없는 경우 표시됩니다.

PROCINFO["버전"] 버전 둔한 사람.

라운드 모드 숫자에 대한 임의 정밀도 산술에 사용할 반올림 모드입니다.
디폴트 값 "엔" (IEEE-754 roundTiesToEven 모드). 허용되는 값은 다음과 같습니다. "엔" or
"N" roundTiesToEven의 경우, "유" or "유" roundTowardPositive의 경우, "D" or "디" for
반올림음수, "지" or "지" roundTowardZero의 경우 버전이
GNU MPFR 라이브러리가 지원하며, "A" or "ㅏ" roundTiesToAway의 경우.

RS 입력 레코드 구분 기호는 기본적으로 개행입니다.

RT 레코드 터미네이터. 둔한 사람 세트 RT 일치하는 입력 텍스트에
다음에 의해 지정된 문자 또는 정규식 RS.

시작 일치하는 첫 번째 문자의 인덱스 성냥(); 일치하지 않는 경우 0입니다. (이것
문자 인덱스가 XNUMX부터 시작함을 의미합니다.)

길이 일치하는 문자열의 길이 성냥(); 일치하는 항목이 없으면 -1입니다.

서브셉 배열 요소에서 여러 첨자를 구분하는 데 사용되는 문자
디폴트 값 "\ 034".

심탭 인덱스가 현재 정의된 모든 전역 변수의 이름인 배열
그리고 프로그램의 배열. 어레이는 읽기에 대한 간접 액세스에 사용될 수 있습니다.
또는 변수 값을 쓰십시오.

= 5
SYMTAB["푸"] = 4
인쇄 # 인쇄물 4

XNUMXD덴탈의 isarray() 함수는 요소가 있는지 테스트하는 데 사용할 수 있습니다. 심탭 는 Teledyne LeCroy 오실로스코프 및 LSA-XNUMX 시리즈 임베디드 신호 분석기가
정렬. 다음을 사용하지 않을 수 있습니다. 삭제 성명서 심탭 정렬.

텍스트 도메인 AWK 프로그램의 텍스트 도메인. 현지화 된 번역을 찾는 데 사용
프로그램의 문자열.

배열
배열은 대괄호([]). 만약
식은 식 목록(특급, 특급 ...) 그러면 배열 첨자는 문자열입니다.
각 표현식의 (문자열) 값의 연결로 구성되며,
가치 서브셉 변하기 쉬운. 이 기능은 다차원 시뮬레이션에 사용됩니다.
배열. 예를 들어:

i = "ㅏ"; j = "비"; k = "C"
x[나는, j, k] = "안녕하세요, 세계\n"

문자열을 할당 "안녕하세요, 세계\n" 배열의 요소에 x 에 의해 색인이 생성됩니다.
"A\034B\034C". AWK의 모든 배열은 연관되어 있습니다. 즉, 문자열 값으로 인덱싱됩니다.

특수 연산자 in 배열에 다음으로 구성된 인덱스가 있는지 테스트하는 데 사용할 수 있습니다.
특정 값:

if (값 in 정렬)
인쇄 배열[값]

배열에 여러 개의 첨자가 있는 경우 다음을 사용하십시오. (나, j) in 정렬.

XNUMXD덴탈의 in 구조는 다음에서도 사용할 수 있습니다. for 의 모든 요소를 ​​반복하는 루프
정렬. 그러나, 그 (나, j) in 정렬 구성은 테스트에서만 작동합니다. for 루프.

다음을 사용하여 배열에서 요소를 삭제할 수 있습니다. 삭제 성명서. 그만큼 삭제 성명서
배열을 지정하여 배열의 전체 내용을 삭제하는 데 사용할 수도 있습니다.
첨자 없는 이름.

둔한 사람 진정한 다차원 배열을 지원합니다. 이러한 배열이 반드시 필요하지는 않습니다.
C나 C++에서와 같이 ``직사각형''. 예를 들어:

에이[1] = 5
[2][1] = 6
[2][2] = 7

주의사항: 당신은 말할 필요가있을 수 있습니다 둔한 사람 배열 요소는 실제로 사용하기 위한 하위 배열입니다.
그것은 어디에 둔한 사람 배열을 기대합니다(예: 두 번째 인수에서 스플릿()). 넌 할 수있어
하위 배열에 요소를 만든 다음 삭제
성명서.

변하기 쉬운 타이핑 Audiencegain과 매출 상승
변수와 필드는 (부동 소수점) 숫자나 문자열 또는 둘 다일 수 있습니다. 어떻게 가치
변수의 해석은 컨텍스트에 따라 다릅니다. 숫자 식에 사용되는 경우
숫자로 취급됩니다. 문자열로 사용되는 경우 문자열로 처리됩니다.

변수를 숫자로 처리하려면 변수에 0을 추가하십시오. 로 취급되도록 강제합니다.
문자열, null 문자열과 연결합니다.

초기화되지 않은 변수는 숫자 값 0과 문자열 값 ""(null 또는
비어 있음, 문자열).

문자열을 숫자로 변환해야 하는 경우 변환은 다음을 사용하여 수행됩니다.
strtod(삼). 숫자는 다음 값을 사용하여 문자열로 변환됩니다. CONVFMT 형식으로
문자열 스프린트(3) 변수의 숫자 값을 인수로 사용합니다. 하지만,
AWK의 모든 숫자가 부동 소수점이지만 정수 값은 항상 로 변환
정수. 따라서 주어진

CONVFMT = "%2.2f"
a = 12
b = a ""

변수 b 문자열 값이 "12" 하지 "12.00".

주의사항: POSIX 모드에서 작동하는 경우(예: --포식스 옵션), 해당 로케일 주의
설정은 십진수를 처리하는 방식을 방해할 수 있습니다.
당신이 먹이는 숫자 둔한 사람 귀하의 로케일이 기대하는 바를 준수해야 합니다.
쉼표(,) 또는 마침표(.).

둔한 사람 다음과 같이 비교를 수행합니다. 두 변수가 숫자이면 비교됩니다.
숫자로. 한 값이 숫자이고 다른 값이 "숫자"인 문자열 값을 갖는 경우
string”이면 비교도 숫자로 수행됩니다. 그렇지 않으면 숫자 값은
문자열로 변환되고 문자열 비교가 수행됩니다. 두 문자열이 비교됩니다.
물론 문자열로.

다음과 같은 문자열 상수에 유의하십시오. "57"있음 지원 숫자 문자열, 그들은 문자열입니다
상수. "숫자 문자열"의 개념은 필드에만 적용됩니다. Getline 입력, 파일 이름,
ARRGV 집단, 환경 의해 생성된 배열의 요소 및 요소 스플릿() or
패트 스플릿() 숫자 문자열입니다. 기본 아이디어는 사용자 입력, 그리고 사용자만
숫자처럼 보이는 입력은 그런 식으로 처리되어야 합니다.

8 진법 진수 상수
AWK 프로그램 소스 코드에서 C 스타일의 XNUMX진수 및 XNUMX진수 상수를 사용할 수 있습니다. 을 위한
예를 들어, XNUMX진수 값 011 십진법과 같다 9및 XNUMX진수 값 0 X 11 is
십진수 17과 같습니다.

상수
AWK의 문자열 상수는 큰따옴표로 묶인 일련의 문자입니다(예:
"값"). 문자열 내에서 특정 탈출 시퀀스 C에서와 같이 인식됩니다. 이들은 다음과 같습니다.

\ 문자 그대로 백슬래시입니다.

\a "경고" 문자; 일반적으로 ASCII BEL 문자입니다.

\b 역행 키이.

\f 양식 공급.

\n 줄 바꿈.

\r 캐리지 리턴.

\t 수평 탭.

\v 수직 탭.

\x마녀 숫자
다음의 XNUMX진수 문자열로 표시되는 문자 \x. 으로
ISO C에서 다음의 모든 XNUMX진수는 이스케이프의 일부로 간주됩니다.
순서. (이 기능은 언어 설계에 대해
위원회.) 예, "\x1B" ASCII ESC(이스케이프) 문자입니다.

DDD 1진수의 2, 3 또는 XNUMX자리 시퀀스로 표시되는 문자입니다. 예를 들어,
"\ 033" ASCII ESC(이스케이프) 문자입니다.

c 리터럴 문자 c.

이스케이프 시퀀스는 상수 정규식(예:
/[ \t\f\n\r\v]/ 공백 문자와 일치).

호환 모드에서 XNUMX진수 및 XNUMX진수 이스케이프로 표시되는 문자
시퀀스는 정규식 상수에서 사용될 때 문자 그대로 처리됩니다. 따라서, /a\52b/
에 해당하는 /a\*b/.

패턴 ACTIONS


AWK는 라인 지향 언어입니다. 패턴이 먼저 나온 다음 행동이 나옵니다. 행동
진술이 동봉되어 있습니다. {}. 패턴이 누락되었거나 작업이
누락되었지만 물론 둘 다는 아닙니다. 패턴이 없으면 작업이 실행됩니다.
모든 단일 입력 레코드에 대해. 누락된 작업은 다음과 같습니다.

{ 인쇄 }

전체 레코드를 인쇄합니다.

주석은 다음으로 시작합니다. # 문자를 입력하고 줄 끝까지 계속합니다. 빈 줄
진술을 구분하는 데 사용할 수 있습니다. 일반적으로 명령문은 개행 문자로 끝나지만
쉼표로 끝나는 줄에는 해당되지 않습니다. {, ?, :, &&||. 다음으로 끝나는 줄 do
or 그렇지 않으면 또한 다음 행에서 명령문이 자동으로 계속되도록 합니다. ~ 안에
다른 경우에는 "\"로 끝나서 줄을 계속할 수 있습니다. 이 경우 새 줄은 다음과 같습니다.
무시되었습니다.

여러 문을 ";"로 구분하여 한 줄에 입력할 수 있습니다. 이것은 다음에 적용됩니다
패턴-액션 쌍(일반적인 경우)의 액션 부분 내의 명령문과
패턴-액션 문 자체에.

패턴
AWK 패턴은 다음 중 하나일 수 있습니다.

BEGIN
END
시작 파일
최종 파일
/정규병 표현/
관계형 표현
무늬 && 무늬
무늬 || 무늬
무늬 ? 무늬 : 무늬
(무늬)
! 무늬
pattern1, pattern2

BEGINEND 입력에 대해 테스트되지 않는 두 가지 특별한 종류의 패턴입니다.
모두의 행동 부분 BEGIN 패턴은 모든 명령문이 병합된 것처럼 병합됩니다.
한장으로 작성 BEGIN 규칙. 입력을 읽기 전에 실행됩니다.
마찬가지로, 모든 END 규칙이 병합되고 모든 입력이 소진되면(또는
출구 문이 실행됩니다). BEGINEND 패턴은 다른 패턴과 결합할 수 없습니다.
패턴 표현의 패턴. BEGINEND 패턴에는 누락된 작업 부분이 있을 수 없습니다.

시작 파일최종 파일 본문이 이전에 실행되는 추가 특수 패턴입니다.
각 명령줄 입력 파일의 첫 번째 레코드를 읽고 마지막 레코드를 읽은 후
각 파일의. 내부 시작 파일 규칙, 값 에르노 다음과 같은 경우 빈 문자열이 됩니다.
파일이 성공적으로 열렸습니다. 그렇지 않으면 파일에 문제가 있고
코드를 사용해야 합니다 다음 파일 건너 뛰려면. 그것이 이루어지지 않는다면, 둔한 사람 그것의 일반적인 치명적인 생산
열 수 없는 파일에 대한 오류입니다.

럭셔리 /정규병 표현/ 패턴, 연결된 명령문은 각 입력에 대해 실행됩니다.
정규식과 일치하는 레코드입니다. 정규 표현식은 다음과 같습니다.
이그렙(1), 아래에 요약되어 있습니다.

A 관계형 표현 섹션에서 아래에 정의된 연산자 중 하나를 사용할 수 있습니다.
행위. 이들은 일반적으로 특정 필드가 특정 정규 표현식과 일치하는지 여부를 테스트합니다.

XNUMXD덴탈의 &&, ||! 연산자는 각각 논리 AND, 논리 OR 및 논리 NOT입니다.
C에서와 같이 단락 평가를 수행하고 더 많은 것을 결합하는 데 사용됩니다.
기본 패턴 표현 대부분의 언어에서와 같이 괄호를 사용하여 변경할 수 있습니다.
평가 순서.

XNUMXD덴탈의 ?: 연산자는 C의 동일한 연산자와 같습니다. 첫 번째 패턴이 참이면
테스트에 사용되는 패턴은 두 번째 패턴이고 그렇지 않으면 세 번째 패턴입니다. 중 하나만
두 번째 및 세 번째 패턴이 평가됩니다.

XNUMXD덴탈의 pattern1, pattern2 식의 형식을 a라고 합니다. 범위 무늬. 모두 일치합니다
일치하는 레코드로 시작하는 입력 레코드 pattern1, 기록될 때까지 계속
일치하는 pattern2, 포함한. 다른 종류의 패턴과 결합하지 않습니다.
표현.

정규병
정규 표현식은 이그렙. 캐릭터들로 구성되어 있습니다
다음과 같이 :

c 메타문자가 아닌 문자와 일치 c.

\c 리터럴 문자와 일치 c.

. 모든 문자와 일치 ...을 포함하여 줄 바꿈.

^ 문자열의 시작과 일치합니다.

$ 문자열의 끝과 일치합니다.

[알파벳...] 문자 목록: 모든 문자와 일치 알파벳.... 다음을 포함할 수 있습니다.
대시로 구분하여 문자 범위를 지정합니다.

[^알파벳...] 부정 문자 목록: 다음을 제외한 모든 문자와 일치합니다. 알파벳....

r1|r2 교대: 다음 중 하나와 일치 r1 or r2.

r1r2 연결: 일치 r1하고 r2.

r+ 하나 이상 일치 r'에스.

r* XNUMX개 이상 일치 r'에스.

r? XNUMX 또는 XNUMX과 일치 r'에스.

(r) 그룹화: 매치 r.

r{n}
r{n,}
r{n,m} 중괄호 안의 하나 또는 두 개의 숫자는 간격 표현. 있다면
중괄호 안의 숫자 하나, 앞의 정규식 r 반복된다 n
타임스. 쉼표로 구분된 두 개의 숫자가 있는 경우 r 반복된다 nm
타임스. 하나의 숫자 뒤에 쉼표가 있는 경우 r 적어도 반복된다
n 시간.

\y 단어의 처음이나 끝에 있는 빈 문자열을 찾습니다.

\B 단어 내의 빈 문자열과 일치합니다.

\< 단어의 시작 부분에 있는 빈 문자열을 찾습니다.

\> 단어 끝에 있는 빈 문자열을 찾습니다.

\s 모든 공백 문자와 일치합니다.

\S 공백이 아닌 모든 문자와 일치합니다.

\w 모든 단어 구성 문자(문자, 숫자 또는 밑줄)와 일치합니다.

\W 단어 구성 요소가 아닌 모든 문자와 일치합니다.

\` 버퍼(문자열)의 시작 부분에 있는 빈 문자열과 일치합니다.

\' 버퍼 끝에 있는 빈 문자열과 일치합니다.

문자열 상수에서 유효한 이스케이프 시퀀스(참조 상수)도
정규 표현식에서 유효합니다.

캐릭터 수업 POSIX 표준에 도입된 기능입니다. 문자 클래스는
특정 속성을 가진 문자 목록을 설명하기 위한 특수 표기법이지만
실제 문자 자체는 국가 및/또는 국가마다 다를 수 있습니다.
문자 집합을 문자 집합으로. 예를 들어, 알파벳이 무엇인지에 대한 개념은
미국과 프랑스에서는 성격이 다릅니다.

문자 클래스는 정규식에서만 유효합니다. 내부 문자의 괄호
목록. 문자 클래스는 다음으로 구성됩니다. [:, 클래스를 나타내는 키워드 및 :]. 그만큼
POSIX 표준에 의해 정의된 문자 클래스는 다음과 같습니다.

[:앨범:] 영숫자 문자.

[:알파:] 알파벳 문자.

[:공백:] 공백 또는 탭 문자.

[:컨트롤:] 제어 문자.

[:숫자:] 숫자.

[:그래프:] 인쇄 가능하고 볼 수 있는 문자입니다. (공백은 인쇄할 수 있지만
보이는 동안 a 둘 다입니다.)

[:낮추다:] 소문자 영문자.

[:인쇄:] 인쇄 가능한 문자(제어 문자가 아닌 문자)

[:점점:] 구두점 문자(문자, 숫자, 컨트롤이 아닌 문자
문자 또는 공백 문자).

[:우주:] 공백 문자(공백, 탭, 폼피드 등).

[:높은:] 대문자 알파벳 문자.

[:x숫자:] XNUMX진수 문자입니다.

예를 들어 POSIX 표준 이전에는 영숫자 문자를 일치시키려면
써야 했다 /[A-Za-z0-9]/. 문자 집합에 다른 알파벳 문자가 포함된 경우
이것은 일치하지 않으며 문자 집합이 ASCII와 다르게 조합된 경우 이
ASCII 영숫자 문자와도 일치하지 않을 수 있습니다. POSIX 문자 클래스를 사용하면
당신은 쓸 수 있습니다 /[[:알번호:]]/, 이것은 알파벳 및 숫자와 일치합니다.
그것이 무엇이든 당신의 캐릭터 세트.

두 개의 추가 특수 시퀀스가 ​​문자 목록에 나타날 수 있습니다. 이들은 비ASCII에 적용됩니다.
단일 기호를 가질 수 있는 문자 집합( 대조 요소) 그것은
하나 이상의 문자로 표시되는 것뿐만 아니라 여러 문자로 표시되는
동등한 대조, 또는 정렬, 목적. (예: 프랑스어에서 일반 "e" 및
억음 악센트 "`"는 동일합니다.)

조합 기호
조합 기호는 로 묶인 다중 문자 조합 요소입니다. [..].
예를 들어, ch 조합 요소인 경우 [[.ch.]] 정규식입니다
이 조합 요소와 일치하는 반면 [채널] 는 정규 표현식입니다.
둘 중 하나와 일치 c or h.

등가 클래스
등가 클래스는 다음과 같은 문자 목록에 대한 로캘별 이름입니다.
동등한. 이름이 동봉되어 있습니다 [==]. 예를 들어 이름 e 수 있습니다
"e", "´" 및 "`"를 모두 나타내는 데 사용됩니다. 이 경우, [[=전자=]] 단골이다
다음 중 하나와 일치하는 표현식 e, 이자형e`.

이러한 기능은 비영어권 로케일에서 매우 유용합니다. 라이브러리 기능
둔한 사람 현재 정규식 일치에 사용하여 POSIX 문자만 인식합니다.
클래스; 조합 기호 또는 등가 클래스를 인식하지 못합니다.

XNUMXD덴탈의 \y, \B, \<, \>, \s, \S, \w, \W, \`\' 연산자는 특정 둔한 사람; 그들은
GNU 정규식 라이브러리의 기능을 기반으로 하는 확장.

다양한 명령줄 옵션은 방법을 제어합니다. 둔한 사람 문자를 규칙적으로 해석합니다.
표현.

옵션 없음
기본 경우, 둔한 사람 POSIX 정규 표현식의 모든 기능을 제공합니다.
위에서 설명한 GNU 정규 표현식 연산자.

--포식스
POSIX 정규 표현식만 지원되며 GNU 연산자는 특별하지 않습니다.
(예, \w 리터럴과 일치 w).

--전통적인
전통적인 유닉스 AWK 정규 표현식이 일치합니다. GNU 연산자는
특수 및 간격 표현식을 사용할 수 없습니다. XNUMX진수로 설명되는 문자
및 XNUMX진수 이스케이프 시퀀스는 다음을 나타내더라도 문자 그대로 처리됩니다.
정규식 메타문자.

--재간격
다음과 같은 경우에도 정규 표현식에서 간격 표현식을 허용합니다. --전통적인 있다
제공됩니다.

행위
조치문은 중괄호로 묶습니다. {}. 조치문은 일반적인
대부분의 언어에서 발견되는 대입문, 조건문 및 반복 문. 운영자,
제어문 및 사용 가능한 입/출력문은 C의 명령문을 따라 패턴화됩니다.

연산자
AWK의 연산자는 내림차순으로 다음과 같습니다.

(...) 그룹화

$ 필드 참조.

++ -- 증가 및 감소, 접두사 및 접미사.

^ 지수화(** 도 사용될 수 있으며, **= 대입 연산자의 경우).

+ - ! 단항 더하기, 단항 빼기 및 논리 부정.

* / % 곱셈, 나눗셈, 모듈러스.

+ - 더하기와 빼기.

공간 문자열 연결.

| |& 다음에 대한 파이프 I/O Getline, 인쇄printf.

< > <= >= != ==
정규 관계 연산자.

~ !~ 정규 표현식 일치, 부정 일치. 주의사항: 일정한 규칙을 사용하지 마십시오.
표현 (/푸/) 왼쪽에 ~ or !~. 에 하나만 사용하십시오.
오른편. 표현식 /푸/ ~ 특급 와 같은 의미를 갖는다 (($0 ~
/푸/) ~ 특급). 이것은 일반적으로 지원 당신이 원하는.

in 배열 구성원.

&& 논리적 AND.

|| 논리적 OR.

?: C 조건식. 이것은 다음과 같은 형태를 가집니다. expr1 ? expr2 : expr3. 면
expr1 가 true인 경우 표현식의 값은 다음과 같습니다. expr2그렇지 않으면 expr3.
중 하나만 expr2expr3 평가됩니다.

= += -= *= /= %= ^=
과제. 둘 다 절대 할당 (였다 = 가치) 및 운영자 할당
(다른 형식)이 지원됩니다.

Control 명세서
제어문은 다음과 같습니다.

if (조건) 성명서 [ 그렇지 않으면 성명서 ]
동안 (조건) 성명서
do 성명서 동안 (조건)
for (expr1; expr2; expr3) 성명서
for (였다 in 정렬) 성명서
하다
계속
삭제 정렬[색인]
삭제 정렬
출구 [ 표현 ]
{ }
스위치 (표현) {
케이스 가치|정규식 : 성명서
...
[ 기본값 : 성명서 ]
}

I / O 명세서
입력/출력 문은 다음과 같습니다.

닫다(파일 [, 방법]) 파일, 파이프 또는 공동 프로세스를 닫습니다. 옵션 방법 이어야합니다
공동 프로세스에 대한 양방향 파이프의 한쪽 끝을 닫을 때 사용됩니다. 그것
문자열 값이어야 합니다. "에" or "에서".

Getline 세트 $0 다음 입력 레코드에서; 세트 NF, NR, FNR, RT.

Getline <파일 세트 $0 다음 기록부터 파일; 세트 NF, RT.

Getline 였다 세트 였다 다음 입력 레코드에서; 세트 NR, FNR, RT.

Getline 였다 <파일 세트 였다 다음 기록부터 파일, RT.

명령 | Getline [였다]
달리기 명령 출력을 파이핑하거나 $0 or 였다, 위와 같이
RT.

명령 |& Getline [였다]
달리기 명령 출력을 공동 프로세스 파이핑으로 $0 or 였다,
위와 같이 RT. 공동 프로세스는 둔한 사람 확대. (명령
소켓도 됩니다. 하위 섹션 참조 이달의 스페셜 입양 부모로서의 귀하의 적합성을 결정하기 위해 미국 이민국에 이름, 아래에.)

다음 것 현재 입력 레코드 처리를 중지합니다. 다음 입력 레코드는
읽기 및 처리는 AWK의 첫 번째 패턴으로 다시 시작됩니다.
프로그램. 입력 데이터의 끝에 도달하면, 둔한 사람 아무거나 실행
END 규칙(들).

다음 파일 현재 입력 파일 처리를 중지합니다. 다음 입력 레코드 읽기
다음 입력 파일에서 옵니다. 파일 이름아르진드 업데이트되고,
FNR 1로 재설정되고 첫 번째 패턴부터 처리가 다시 시작됩니다.
AWK 프로그램에서. 입력 데이터의 끝에 도달하면, 둔한 사람
아무거나 실행 END 규칙(들).

인쇄 현재 레코드를 인쇄합니다. 출력 레코드는 다음으로 종료됩니다.
의 가치 ORS.

인쇄 expr 목록 표현식을 인쇄합니다. 각 표현식은 다음 값으로 구분됩니다.
FSO. 출력 레코드는 다음 값으로 종료됩니다. ORS.

인쇄 expr 목록 >파일 표현식 인쇄 파일. 각 표현식은
의 가치 FSO. 출력 레코드는 다음 값으로 종료됩니다.
ORS.

printf 프론트, expr 목록 형식을 지정하고 인쇄하십시오. 보다 XNUMXD덴탈의 printf 성명서아래.

printf 프론트, expr 목록 >파일
서식 및 인쇄 파일.

체계(명령줄) 명령을 실행하십시오. 명령줄, 종료 상태를 반환합니다. (이건 아마
비 POSIX 시스템에서는 사용할 수 없습니다.)

플러시([파일]) 열려 있는 출력 파일 또는 파이프와 관련된 모든 버퍼를 플러시합니다. 파일.
If 파일 누락되었거나 null 문자열인 경우 열려 있는 모든 항목을 플러시합니다.
출력 파일 및 파이프.

다음에 대해 추가 출력 리디렉션이 허용됩니다. 인쇄printf.

인쇄 ... >> 파일
에 출력을 추가합니다. 파일.

인쇄 ... | 명령
파이프에 씁니다.

인쇄 ... |& 명령
데이터를 공동 프로세스 또는 소켓으로 보냅니다. (또한 하위 섹션 참조 이달의 스페셜 입양 부모로서의 귀하의 적합성을 결정하기 위해 미국 이민국에 이름,
이하.)

XNUMXD덴탈의 Getline 명령은 성공 시 1, 파일 끝 시 0, 오류 시 -1을 반환합니다. 에
오류, 에르노 문제를 설명하는 문자열로 설정됩니다.

주의사항: 양방향 소켓을 여는 데 실패하면 치명적이지 않은 오류가 반환됩니다.
호출 기능. 파이프, 공동 프로세스 또는 소켓을 사용하여 Getline또는에서 인쇄 or
printf 루프 내에서 절대로 필요한 것 사용 닫기() 명령의 새 인스턴스를 생성하거나
소켓. AWK는 파이프, 소켓 또는 공동 프로세스가 반환될 때 자동으로 닫지 않습니다.
EOF.

XNUMXD덴탈의 printf 성명서
AWK 버전의 printf 진술 및 sprintf () 기능(아래 참조) 수락
다음 변환 사양 형식:

%c 단일 문자입니다. 에 사용된 인수인 경우 %c 숫자인 경우 다음으로 처리됩니다.
문자 및 인쇄. 그렇지 않으면 인수는 문자열로 간주되며
해당 문자열의 첫 번째 문자만 인쇄됩니다.

%d, %i 십진수(정수 부분).

%e, %E 형식의 부동 소수점 숫자 [-]d.dddddde[+-]dd. 그만큼 %E 형식 사용 E
대신 e.

%f, %F 형식의 부동 소수점 숫자 [-]DDD.dddddd. 시스템 라이브러리가 지원하는 경우
그것, %F 또한 사용할 수 있습니다. 이것은 마치 %f, 그러나 특별한 경우 대문자를 사용합니다.
"숫자가 아님" 및 "무한대" 값. 만약에 %F 사용할 수 없습니다, 둔한 사람 사용 %f.

%g, %G %e or %f 중요하지 않은 XNUMX이 포함된 변환(둘 중 더 짧은 것)
억제. NS %G 형식 사용 %E 대신 %e.

%o 부호 없는 XNUMX진수(또한 정수).

%u 부호 없는 XNUMX진수(역시 정수).

%s 문자열입니다.

%x, %X 부호 없는 XNUMX진수(정수)입니다. 그만큼 %X 형식 사용 ABCDEF 대신
abcdef.

%% 하나의 % 성격; 인수가 변환되지 않습니다.

선택적, 추가 매개변수는 % 및 제어 문자:

계산$ 사용 계산포매팅의 이 시점에서 '번째 인수. 이것은
위치 지정자 주로 번역된 버전에서 사용하기 위한 것입니다.
AWK 프로그램의 원본 텍스트가 아닌 형식 문자열입니다. 이것은 둔한 사람
확대.

- 표현식은 해당 필드 내에서 왼쪽 정렬되어야 합니다.

공간 숫자 변환의 경우 양수 값에는 공백을, 음수 값에는 접두사를 붙입니다.
마이너스 기호가 있습니다.

+ 너비 수정자 앞에 사용되는 더하기 기호(아래 참조)는 항상
형식화할 데이터가 양수인 경우에도 숫자 변환을 위한 부호입니다. 그만큼 +
공간 수정자를 재정의합니다.

# 특정 제어 문자에 대해 "대체 형식"을 사용하십시오. 을 위한 %o, 선도 공급
영. 을 위한 %x%X, 선도 공급 0x or 0X XNUMX이 아닌 결과를 위해. 을 위한 %e, %E,
%f%F, 결과에는 항상 소수점이 포함됩니다. 을 위한 %g%G, 후행
XNUMX은 결과에서 제거되지 않습니다.

0 최고의 0 (영)은 플래그 역할을 하며 출력을 다음으로 채워야 함을 나타냅니다.
공백 대신 XNUMX. 이는 숫자 출력 형식에만 적용됩니다. 이것
플래그는 필드 너비가 인쇄할 값보다 넓은 경우에만 효과가 있습니다.

' 작은따옴표 문자가 지시합니다. 둔한 사람 로케일의 천 단위 구분 기호를 삽입하려면
문자를 십진수로 변환하고 로케일의 소수점도 사용합니다.
부동 소수점 형식의 문자. 이를 위해서는 올바른 로케일 지원이 필요합니다.
C 라이브러리 및 현재 로케일의 정의에 있습니다.

필드는 이 너비로 패딩되어야 합니다. 필드는 일반적으로
공백. 와 더불어 0 플래그는 XNUMX으로 채워집니다.

.사전 인쇄할 때 사용할 정밀도를 지정하는 숫자입니다. 을 위해 %e, %E, %f
%F, 형식, 오른쪽에 인쇄하려는 자릿수를 지정합니다.
소수점. 을 위해 %g%G 형식의 최대 수를 지정합니다.
유효 숫자. 을 위해 %d, %i, %o, %u, %x%X 형식을 지정합니다.
인쇄할 최소 자릿수입니다. 을 위한 %s, 최대 수를 지정합니다.
인쇄해야 하는 문자열의 문자.

동적 인 사전 ISO C의 기능 printf () 루틴이 지원됩니다. ㅏ *
대신에 or 사전 사양은 해당 값을
인수 목록 printf or sprintf (). 다이나믹과 함께 위치 지정자를 사용하려면
너비 또는 정밀도, 제공 계산$* 형식 문자열에서. 예를 들어,
"%3$*2$.*1$s".

이달의 스페셜 입양 부모로서의 귀하의 적합성을 결정하기 위해 미국 이민국에 이름
둘 중 하나에서 I/O 리디렉션을 수행할 때 인쇄 or printf 파일로 또는 Getline 에서
파일 둔한 사람 특정 특수 파일 이름을 내부적으로 인식합니다. 이 파일 이름은 액세스를 허용합니다.
에서 상속된 파일 디스크립터 열기 둔한 사람의 부모 프로세스(일반적으로 셸). 이것들
파일 이름은 명령줄에서 데이터 파일의 이름을 지정하는 데 사용할 수도 있습니다. 파일 이름은 다음과 같습니다.

- 표준 입력.

/dev/표준입력 표준 입력.

/dev/stdout 표준 출력.

/dev/stderr 표준 오류 출력.

/개발/fd/n 열린 파일 기술자와 관련된 파일 n.

이는 특히 오류 메시지에 유용합니다. 예를 들어:

인쇄 "당신 불었다 그것!" > "/dev/stderr"

그렇지 않으면 사용해야 할 반면

인쇄 "당신 불었다 그것!" | "고양이 1>&2"

다음과 같은 특수 파일 이름을 사용할 수 있습니다. |& 생성을 위한 공동 처리 연산자
TCP/IP 네트워크 연결:

/inet/tcp/포트/숙주/보고
/inet4/tcp/포트/숙주/보고
/inet6/tcp/포트/숙주/보고
로컬 포트에서 TCP/IP 연결을 위한 파일 포트 원격 호스트로 숙주 원격으로
포트 보고. 포트 사용 0 시스템이 포트를 선택하도록 합니다. 사용 /inet4 강제로
IPv4 연결 및 /inet6 IPv6 연결을 강제합니다. 솔직한 /inet 를 사용하여
시스템 기본값(대부분 IPv4).

/inet/udp/포트/숙주/보고
/inet4/udp/포트/숙주/보고
/inet6/udp/포트/숙주/보고
유사하지만 TCP/IP 대신 UDP/IP를 사용합니다.

숫자 기능
AWK에는 다음과 같은 내장 산술 함수가 있습니다.

아탄2(y, x) 아크탄젠트 반환 y / x 라디안으로.

코사인(특급) 다음의 코사인을 반환합니다. 특급라디안 단위입니다.

exp (특급) 지수함수.

int (특급) 정수로 자릅니다.

통나무(특급) 자연 로그 함수.

랜드() 난수 반환 N, 0과 1 사이, 0 ≤ N <1.

죄(특급) 다음의 사인을 반환합니다. 특급라디안 단위입니다.

제곱미터(특급) 다음의 제곱근을 반환합니다. 특급.

sand([특급]) 특급 난수 생성기의 새 시드로. 아니오인 경우 특급 is
제공된 시간을 사용하십시오. 무작위에 대한 이전 시드를 반환합니다.
숫자 생성기.

기능
둔한 사람 에는 다음과 같은 내장 문자열 함수가 있습니다.

다양한(s [, d [, 방법] ]) 소스 배열의 요소 수를 반환합니다. s. 정렬
내용 s 사용 둔한 사람값을 비교하기 위한 의 일반적인 규칙
정렬된 값의 인덱스 교체 s 순차적으로
1로 시작하는 정수. 선택적 대상 배열인 경우 d is
지정됨, 첫 번째 중복 s 으로 d, 그런 다음 정렬 d을 떠나
소스 배열의 인덱스 s 변하지 않은. 선택적 문자열 방법
방향과 비교 모드를 제어합니다. 유효한 값
방법 유효한 문자열 중 하나입니다. PROCINFO["정렬된_인"]. 그것
다음과 같이 사용자 정의 비교 함수의 이름이 될 수도 있습니다.
에 설명 PROCINFO["정렬된_인"].

다양한(s [, d [, 방법] ])
소스 배열의 요소 수를 반환합니다. s. 그 행동
의 그것과 같다 asort (), 배열을 제외하고 색인 are
배열 값이 아닌 정렬에 사용됩니다. 완료되면 배열은
숫자로 인덱싱되며 값은 원본의 값입니다.
지수. 원래 값이 손실됩니다. 따라서 두 번째 제공
원본을 보존하려면 배열을 사용하십시오. 목적
선택적 문자열 방법 에서 설명한 것과 동일합니다. asort () 위.

젠섭(r, s, h [, t]) 대상 문자열 검색 t 정규식 일치
r. 면 h 로 시작하는 문자열입니다. g or G, 그런 다음 모두 교체
일치하는 rs. 그렇지 않으면, h 나타내는 숫자입니다.
의 일치 r 교체. 만약에 t 제공되지 않음, 사용 $0 대신.
대체 텍스트 내 s, 시퀀스 n어디로 n 숫자입니다
1에서 9까지, 일치하는 텍스트만 나타내는 데 사용할 수 있습니다.
전에, n'번째 괄호로 묶인 하위 표현식입니다. 순서 \0 대표
문자와 마찬가지로 일치하는 전체 텍스트 &. 같지 않은 보결()
gsub(), 수정된 문자열은
함수이고 원래 대상 문자열은 지원 바꾸었습니다.

gsub(r, s [, t]) 정규 표현식과 일치하는 각 하위 문자열에 대해 r 문자열에서
t, 문자열 대체 s, 및 수를 반환
대체. 만약에 t 제공되지 않음, 사용 $0. & FBI 증오 범죄 보고서
대체 텍스트는 실제로 있었던 텍스트로 대체됩니다.
일치. 사용 \& 리터럴을 얻으려면 &. (다음과 같이 입력해야 합니다.
"\\&"; 만나다 둔한 사람: 유효한 AWK 프로그램 작성 보다 완전한 토론을 위해
에 대한 규칙 &대체 텍스트의 와 백슬래시
보결(), gsub()젠섭().)

인덱스(s, t) 문자열의 인덱스를 반환 t 문자열에서 s또는 0인 경우 t 하지 않습니다
현재의. (이는 문자 인덱스가 XNUMX부터 시작함을 의미합니다.)
정규 표현식 상수를 사용하는 것은 치명적인 오류입니다. t.

길이([s]) 문자열의 길이를 반환 s또는 길이 $0 if s 하지 않습니다
공급. 비표준 확장으로 배열 인수를 사용하여
길이() 배열의 요소 수를 반환합니다.

성냥(s, r [, a]) 위치를 반환 s 여기서 정규식은 r 발생하거나
0이면 r 존재하지 않으며 값을 설정합니다. 시작길이.
인수 순서는 ~ 운영자:
하위 버전 ~ re. 배열인 경우 a 제공됩니다 a 지워진 다음 요소
1부터 n 의 부분으로 채워져 있습니다. s 일치하는
에서 해당하는 괄호로 묶인 하위 표현식 r. 0번째 요소
of a 의 부분을 포함 s 전체 정규와 일치
표현 r. 첨자 a[n, "시작"]a[n, "길이"]
문자열과 길이에 각각 시작 색인을 제공하십시오.
각 일치하는 부분 문자열의.

패트 스플릿(s, a [, r [, 패혈증] ])
문자열 분할 s 배열로 a 및 구분자 배열 패혈증
정규식에 r, 필드 수를 반환합니다.
요소 값은 s 일치하는 r. 의 가치
셉[i] 앞에 나타난 구분자는 a[i+1]. 면 r
생략하고, FPAT 대신 사용됩니다. 배열 a패혈증 are
먼저 클리어. 분할은 필드 분할과 동일하게 동작합니다.
FPAT, 전술 한 바와.

나뉘다(s, a [, r [, 패혈증] ])
문자열 분할 s 배열로 a 및 구분자 배열 패혈증
정규식에 r, 필드 수를 반환합니다. 만약에
r 생략하고, FS 대신 사용됩니다. 배열 a패혈증 are
먼저 클리어. 셉[i] 다음과 일치하는 필드 구분 기호입니다. r
사이에 a[i]a[i+1]. 면 r 단일 공백 ​​다음
공백 s 추가 배열 요소로 이동 0월[XNUMX]
후행 공백은 추가 배열 요소로 들어갑니다. 셉[n],
어디에 n 의 반환 값입니다. 나뉘다(s, a, r, 패혈증). 파편
위에서 설명한 필드 분할과 동일하게 동작합니다.

sprintf와 (fmt, expr 목록) 인쇄 expr 목록 에 따라 fmt, 결과 문자열을 반환합니다.

스트토넘(하위 버전) 검토하다 하위 버전, 숫자 값을 반환합니다. 만약에 하위 버전 로 시작
지도 0, XNUMX진수로 처리합니다. 만약에 하위 버전 로 시작
지도 0x or 0X, XNUMX진수로 취급합니다. 그렇지 않으면,
XNUMX진수라고 가정합니다.

보결(r, s [, t]) 처럼 gsub(), 하지만 일치하는 첫 번째 하위 문자열만 바꿉니다.

substr (s, i [, n]) 기껏해야 반환 n-문자 부분 문자열 s 시작 i. 면 n
생략, 나머지 사용 s.

낮추다(하위 버전) 문자열의 복사본을 반환 하위 버전, 모두 대문자 사용
in 하위 버전 해당 소문자로 변환됩니다.
알파벳이 아닌 문자는 변경되지 않습니다.

토퍼(하위 버전) 문자열의 복사본을 반환 하위 버전, 모두 소문자로
in 하위 버전 해당 대문자로 변환됩니다.
알파벳이 아닌 문자는 변경되지 않습니다.

둔한 사람 멀티바이트를 인식합니다. 이것은 인덱스(), 길이(), substr ()성냥() 모든 일
바이트가 아닌 문자로.

Time 기능
AWK 프로그램의 주요 용도 중 하나는 시간이 포함된 로그 파일을 처리하는 것이므로
스탬프 정보, 둔한 사람 타임 스탬프를 얻기 위해 다음과 같은 기능을 제공합니다.
포맷합니다.

mk시간(날짜 사양)
날짜 사양 에 의해 반환된 것과 동일한 형식의 타임 스탬프로 시스템타임()
결과를 반환합니다. 그만큼 날짜 사양 형식의 문자열입니다. YYYY MM DD HH MM 봄 여름 시즌[
서머타임]. 문자열의 내용은 다음을 나타내는 XNUMX개 또는 XNUMX개의 숫자입니다.
각각 세기를 포함한 전체 연도, 1에서 12까지의 월, 일
1부터 31까지의 월, 0부터 23까지의 시간, 0부터 XNUMX까지의 분
59, 0에서 60 사이의 초, 선택적 일광 절약 플래그. 가치
이러한 숫자는 지정된 범위 내에 있을 필요가 없습니다. 예를 들어 한 시간
-1은 자정 1시간 전을 의미합니다. 원점 제로 그레고리력은 다음과 같습니다.
0년 이전 1년 및 1년 이전 -0년으로 가정합니다. 시간은 다음과 같습니다.
현지 시간대로 가정합니다. 일광 절약 플래그가 양수이면
시간은 일광 절약 시간으로 간주됩니다. XNUMX이면 시간이 다음으로 가정됩니다.
표준 시간이어야 합니다. 음수인 경우(기본값), mktime () 결정하려는 시도
지정된 시간 동안 일광 절약 시간이 적용되는지 여부. 만약에 날짜 사양
요소가 충분하지 않거나 결과 시간이 범위를 벗어난 경우
mktime () -1를 반환합니다.

strf시간([체재 [, 따라서 오른쪽 하단에[, utc-플래그]]])
형성 따라서 오른쪽 하단에 의 사양에 따라 체재. 면 utc-플래그 is
존재하고 XNUMX이 아니거나 null이 아닌 경우 결과는 UTC입니다. 그렇지 않으면 결과
현지 시간입니다. 그만큼 따라서 오른쪽 하단에 에 의해 반환된 것과 동일한 형식이어야 합니다.
시스템타임(). 면 따라서 오른쪽 하단에 이 없으면 현재 시간이 사용됩니다. 만약에 체재
의 출력과 동일한 기본 형식이 없습니다. 데이터(1)이 사용됩니다. 그만큼
기본 형식은 다음에서 사용할 수 있습니다. PROCINFO["strftime"]. 사양 참조
전에, strftime () 보장되는 형식 변환을 위한 ISO C의 기능
가능 하게끔.

시스템타임() Epoch 이후의 초 수로 현재 시간을 반환합니다.
(POSIX 시스템에서 1970-01-01 00:00:00 UTC).

비트 조작 기능
둔한 사람 다음 비트 조작 기능을 제공합니다. 그들은 이중으로 변환하여 작동합니다.
정밀 부동 소수점 값 uintmax_t 정수, 연산 수행, 그리고
결과를 다시 부동 소수점으로 변환합니다. 기능은 다음과 같습니다.

그리고(v1, v2 [, ...]) 인수 목록에 제공된 값의 비트 AND를 반환합니다.
적어도 두 개는 있어야 합니다.

완료() 의 비트 보수를 반환합니다. .

l시프트(, 계산) 의 값을 반환 , 왼쪽으로 이동 계산 비트.

또는(v1, v2 [, ...]) 인수 목록에 제공된 값의 비트 OR을 반환합니다.
적어도 두 개는 있어야 합니다.

rshift(, 계산) 의 값을 반환 , 오른쪽으로 이동 계산 비트.

xor(v1, v2 [, ...]) 인수 목록에 제공된 값의 비트별 XOR을 반환합니다.
적어도 두 개는 있어야 합니다.

타입 함수
다음 함수는 다차원 배열에 사용됩니다.

isarray(x)
다음과 같은 경우 참 반환 x 배열이고 그렇지 않으면 거짓입니다.

국제화 기능
문자열을 번역하기 위해 AWK 프로그램 내에서 다음 기능을 사용할 수 있습니다.
런타임에. 자세한 내용은 다음을 참조하세요. 둔한 사람: 유효한 AWK 프로그램 작성.

바인드텍스트도메인(예배 규칙서 [, 도메인])
디렉토리 지정 둔한 사람 을 찾습니다 .gmo 파일, 그렇지 않은 경우 또는
``표준'' 위치에 배치할 수 없습니다(예: 테스트 중). 돌아간다
디렉토리 도메인 ``묶여 있다.''
기본값은 도메인 의 값이다 텍스트 도메인. 면 예배 규칙서 null 문자열입니다.
(""), 다음 바인드텍스트도메인() 주어진 바인딩에 대한 현재 바인딩을 반환합니다. 도메인.

dcgettext( [, 도메인 [, 범주]])
번역 반환 텍스트 도메인에서 도메인 로케일 범주
범주. 에 대한 기본값 도메인 의 현재 값입니다. 텍스트 도메인. 그만큼
기본값 범주 is "LC_MESSAGES".
에 대한 값을 제공하는 경우 범주, 알려진 문자열 중 하나와 동일한 문자열이어야 합니다.
에 설명된 로케일 범주 둔한 사람: 유효한 AWK 프로그램 작성. 당신은 또한해야합니다
텍스트 도메인을 제공합니다. 사용 텍스트 도메인 현재 도메인을 사용하려는 경우.

dcngettext(string1, string2, 번호 [, 도메인 [, 범주]])
에 사용된 복수형을 반환합니다. 번호 번역의 string1string2 in
텍스트 도메인 도메인 로케일 범주 범주. 에 대한 기본값 도메인 is
현재 가치 텍스트 도메인. 에 대한 기본값 범주 is "LC_MESSAGES".
에 대한 값을 제공하는 경우 범주, 알려진 문자열 중 하나와 동일한 문자열이어야 합니다.
에 설명된 로케일 범주 둔한 사람: 유효한 AWK 프로그램 작성. 당신은 또한해야합니다
텍스트 도메인을 제공합니다. 사용 텍스트 도메인 현재 도메인을 사용하려는 경우.

사용자 정의 기능


AWK의 함수는 다음과 같이 정의됩니다.

기능 name(매개 변수 명부) { }

함수는 패턴 또는 표현식의 표현식 내에서 호출될 때 실행됩니다.
행위. 함수 호출에 제공된 실제 매개변수는 다음을 인스턴스화하는 데 사용됩니다.
함수에서 선언된 공식 매개변수. 배열은 참조로 전달됩니다.
변수는 값으로 전달됩니다.

함수는 원래 AWK 언어의 일부가 아니었기 때문에 로컬
변수는 다소 어색합니다. 매개변수 목록에서 추가 매개변수로 선언됩니다.
관례는 지역 변수와 실제 매개변수를
매개변수 목록. 예를 들어:

기능 에프(피, q, a, b) # a b are 지방의
{
...
}

/알파벳/ { ... ; 에프(1, 2) ; ... }

함수 호출의 왼쪽 괄호는 함수 바로 뒤에 와야 합니다.
중간에 공백이 없는 이름입니다. 이렇게 하면 구문의 모호성을 피할 수 있습니다.
연결 연산자. 이 제한은 나열된 내장 함수에는 적용되지 않습니다.
위.

함수는 서로를 호출할 수 있으며 재귀적일 수 있습니다. 로컬로 사용되는 함수 매개변수
변수는 함수 호출 시 null 문자열과 숫자 XNUMX으로 초기화됩니다.

return 특급 함수에서 값을 반환합니다. 없는 경우 반환 값은 정의되지 않습니다.
값이 제공되거나 함수가 "떨어져" 종료되어 반환되는 경우.

으로 둔한 사람 확장, 함수는 간접적으로 호출될 수 있습니다. 이렇게 하려면 다음의 이름을 지정하십시오.
문자열로 변수에 호출할 함수. 그런 다음 변수를 마치
접두사가 붙은 함수의 이름이었습니다. @ 다음과 같이 서명하십시오.
기능 마이펑크()
{
인쇄 "myfunc 라고 불리는"
...
}

{ ...
the_func = "myfunc"
@the_func() # 전화 을 통하여 the_func myfunc
...
}
버전 4.1.2부터는 사용자 정의 함수, 내장 함수 및
확장 기능.

If --린트 제공되었으며, 둔한 사람 구문 분석 시간에 정의되지 않은 함수에 대한 호출에 대해 경고합니다.
런타임에 대신. 런타임에 정의되지 않은 함수를 호출하는 것은 치명적인 오류입니다.

단어 펑크 대신 사용할 수 있습니다 기능, 이것은 더 이상 사용되지 않지만.

동적으로 로딩 현재 기능


실행 중인 새 내장 함수를 동적으로 추가할 수 있습니다. 둔한 사람 와 통역사
@짐 성명. 자세한 내용은 이 매뉴얼 페이지의 범위를 벗어납니다. 보다 둔한 사람:
유효한 AWK 프로그램 작성.

신호


XNUMXD덴탈의 둔한 사람 프로파일러는 두 개의 신호를 받아들입니다. 시구스르1 프로필과 기능을 덤프하게 만듭니다.
프로필 파일에 대한 호출 스택은 다음 중 하나입니다. awkprof.out, 또는 파일 이름이 무엇이든
와 더불어 --프로필 옵션. 그런 다음 계속 실행됩니다. 시업 원인 둔한 사람 덤프
프로필 및 함수 호출 스택을 호출한 다음 종료합니다.

국제화


문자열 상수는 큰따옴표로 묶인 일련의 문자입니다. 비영어권
말하기 환경에서 AWK 프로그램의 문자열을 요구 사항으로 표시할 수 있습니다.
현지 자연어로 번역합니다. 이러한 문자열은 AWK 프로그램에서 다음과 같이 표시됩니다.
선행 밑줄("_"). 예를 들어,

둔한 사람 '시작하다 { 인쇄 "안녕하세요, 세계" }'

항상 인쇄 안녕하세요, 세계. 그러나,

둔한 사람 '시작하다 { 인쇄 _"안녕하세요, 세계" }'

인쇄할 수 있습니다 안녕하세요 몽드 프랑스.

지역화 가능한 AWK 프로그램을 생성하고 실행하는 데는 여러 단계가 포함됩니다.

1. 추가 BEGIN 에 값을 할당하는 작업 텍스트 도메인 텍스트 도메인을 설정하는 변수
프로그램과 관련된 이름으로:

BEGIN { 텍스트 도메인 = "마이프로그" }

이것은 허용 둔한 사람 를 찾는 방법 .gmo 프로그램과 관련된 파일. 이것 없이
단계, 둔한 사람 를 사용하여 메시지 번역이 포함되지 않은 텍스트 도메인
당신의 프로그램을 위해.

2. 선행 밑줄로 번역해야 하는 모든 문자열을 표시합니다.

3. 필요한 경우 dcgettext() 및 / 또는 바인드텍스트도메인() 프로그램의 기능,
적절한.

4. 실행 둔한 사람 --gen-pot -f myprog.awk > myprog.pot ~를 생성하기 위해 .냄비 당신의 파일
프로그램)

5. 적절한 번역을 제공하고 해당 번역을 빌드 및 설치합니다. .gmo 파일.

국제화 기능은 에 자세히 설명되어 있습니다. 둔한 사람: 유효한 AWK
프로그램 작성.

POSIX 호환성


주요 목표 둔한 사람 POSIX 표준과의 호환성뿐 아니라
Brian Kernighan의 최신 버전 AWK. 이를 위해, 둔한 사람 다음을 통합
AWK 책에는 설명되어 있지 않지만 Brian의 일부인 사용자가 볼 수 있는 기능
커니건의 버전 AWK, POSIX 표준에 있습니다.

이 책은 명령줄 변수 할당이 다음과 같은 경우에 발생함을 나타냅니다. AWK 그렇지 않으면
인수를 파일로 엽니다. BEGIN 규칙이 실행됩니다. 그러나,
이전 구현에서 이러한 할당이 파일 이름 앞에 나타나면
배정이 일어날 것입니다 전에 전에, BEGIN 규칙이 실행되었습니다. 애플리케이션이 의존하게 되었습니다.
이 "기능" 언제 AWK 문서와 일치하도록 변경되었습니다. -v 에 대한 옵션
응용 프로그램을 수용하기 위해 프로그램 실행이 추가되기 전에 변수 할당
이전 행동에 의존했습니다. (이 기능은 Bell과
연구소 및 GNU 개발자.)

인수를 처리할 때 둔한 사람 특수 옵션 "--"를 사용하여 끝을 알립니다.
인수. 호환성 모드에서는 정의되지 않은 옵션에 대해 경고하지만 그렇지 않으면 무시합니다.
정상적인 작동에서 이러한 인수는 처리할 AWK 프로그램에 전달됩니다.

AWK 책은 다음의 반환 값을 정의하지 않습니다. srand (). POSIX 표준에는
난수 시퀀스를 추적할 수 있도록 사용 중인 시드를 반환합니다.
따라서 srand () in 둔한 사람 또한 현재 시드를 반환합니다.

기타 새로운 기능은 다음과 같습니다. -f 옵션(MKS에서 AWK); 그만큼 환경 정렬;
전에, \a\v 이스케이프 시퀀스(원래 둔한 사람 벨에 다시 피드백
실험실 버전); 그만큼 tolower()탑퍼() 내장 함수(Bell에서
실험실 버전); 및 ISO C 변환 사양은 printf (처음에 완료
벨 연구소 버전).

역사적인 STYLE


역사적인 AWK 구현에는 다음과 같은 한 가지 기능이 있습니다. 둔한 사람 지원: 가능
전화를 걸다. 길이() 인수가 없을 뿐만 아니라 인수가 없는 내장 함수
괄호! 따라서,

a = 길이 # 거룩한 알골 60, 배트맨!

중 하나와 동일합니다

a = 길이()
a = 길이($0)

이 기능을 사용하는 것은 좋지 않은 습관이며 둔한 사람 다음과 같은 경우 사용에 대한 경고를 발행합니다. --린트 is
명령줄에 지정됩니다.

GNU 확장


둔한 사람 POSIX에 대한 확장이 너무 많습니다. AWK. 그들은 이것에 설명되어 있습니다
부분. 여기에 설명된 모든 확장은 다음을 호출하여 비활성화할 수 있습니다. 둔한 사람 와 더불어
--전통적인 or --포식스 옵션을 제공합니다.

다음과 같은 기능 둔한 사람 POSIX에서는 사용할 수 없습니다. AWK.

· 다음을 통해 명명된 파일에 대해 경로 검색이 수행되지 않습니다. -f 옵션. 따라서 AWKPATH
환경 변수는 특별하지 않습니다.

· 파일 포함을 위한 기능이 없습니다(둔한 사람's @포함하다 기구).

· C로 작성된 새 함수를 동적으로 추가하는 기능이 없습니다(둔한 사람's @짐
기구).

· \x 탈출 시퀀스. (비활성화 --포식스.)

· 다음에 줄을 계속하는 기능 ?:. (비활성화 --포식스.)

· AWK 프로그램의 XNUMX진수 및 XNUMX진수 상수.

· 아르진드, 빈모드, 에르노, 린트, RT텍스트 도메인 변수는 특별하지 않습니다.

· 대소문자 무시 변수 및 그 부작용을 사용할 수 없습니다.

· 필드폭 가변 및 고정 너비 필드 분할.

· FPAT 필드 값을 기준으로 변수 및 필드 분할.

· 프로신포 배열을 사용할 수 없습니다.

· 사용 RS 정규식으로.

· I/O 리디렉션에 사용할 수 있는 특수 파일 이름이 인식되지 않습니다.

· |& 공동 프로세스를 생성하기 위한 연산자입니다.

· 시작 파일최종 파일 특수 패턴은 사용할 수 없습니다.

· null 문자열을 값으로 사용하여 개별 문자를 분할하는 기능 FS,
그리고 세 번째 인수로 스플릿().

· 에 대한 선택적 네 번째 인수 스플릿() 구분자 텍스트를 수신합니다.

· 선택적인 두 번째 인수는 닫기() 기능.

· 선택적 세 번째 인수는 성냥() 기능.

· 위치 지정자를 사용하는 기능 printfsprintf ().

· 배열을 전달하는 기능 길이().

· 그리고(), asort (), 분류(), 바인드텍스트도메인(), 완료(), dcgettext(), dcngettext(),
젠섭(), 엘시프트(), mktime (), 또는(), 패트 스플릿(), rshift(), strftime (), 스트토넘(),
시스템타임()xor() 기능.

· 현지화 가능한 문자열.

AWK 책은 반환 값을 정의하지 않습니다. 닫기() 기능. 둔한 사람's 닫기()
에서 값을 반환합니다. 닫기(3) 또는 닫기(3) 출력 파일이나 파이프를 닫을 때,
각기. 입력 파이프를 닫을 때 프로세스의 종료 상태를 반환합니다. 그만큼
명명된 파일, 파이프 또는 공동 프로세스가 a로 열리지 않은 경우 반환 값은 -1입니다.
리디렉션.

인셀덤 공식 판매점인 둔한 사람 와 함께 호출됩니다. --전통적인 옵션, 경우 fs 인수 -F 옵션은
"t" 다음 FS 탭 문자로 설정됩니다. 타이핑에 유의하십시오. 둔한 사람 -F\t ... 단순히 원인
쉘은 "t"를 인용하고 "\t"를 -F 옵션. 이것은
다소 못생긴 특수한 경우에는 기본 동작이 아닙니다. 이 동작 또한
발생하는 경우 --포식스 지정되었습니다. 실제로 탭 문자를 필드로 사용하려면
구분 기호를 사용하려면 작은따옴표를 사용하는 것이 가장 좋습니다. 둔한 사람 -F'\t' ....

환경 변수


XNUMXD덴탈의 AWKPATH 환경 변수는 다음을 수행하는 디렉토리 목록을 제공하는 데 사용할 수 있습니다. 둔한 사람
를 통해 이름이 지정된 파일을 찾을 때 검색합니다. -f, --파일, -i--포함하다 옵션. 만약
초기 검색 실패, 경로 추가 후 다시 검색 .awk 파일명에.

XNUMXD덴탈의 AWKLIBPATH 환경 변수는 다음을 수행하는 디렉토리 목록을 제공하는 데 사용할 수 있습니다. 둔한 사람
를 통해 이름이 지정된 파일을 찾을 때 검색합니다. -l--짐 옵션을 제공합니다.

XNUMXD덴탈의 GAWK_READ_TIMEOUT 환경 변수를 사용하여 시간 제한을 지정할 수 있습니다.
터미널, 파이프 또는 양방향 통신에서 입력을 읽기 위한 밀리초
소켓.

소켓을 통해 원격 호스트에 연결하려면, GAWK_SOCK_RETRIES 의 수를 제어
재시도 및 GAWK_MSEC_SLEEP 그리고 재시도 사이의 간격. 간격은
밀리초. 지원하지 않는 시스템에서 잠자다(3) 값은 반올림됩니다.
정수 초.

If POSIXLY_CORRECT 환경에 존재한다면 둔한 사람 처럼 정확히 행동한다 --포식스 했다
명령줄에 지정되었습니다. 만약에 --린트 지정되었으며, 둔한 사람 경고를 발하다
이 효과에 대한 메시지.

EXIT 지위


경우 출구 문이 값과 함께 사용된 다음 둔한 사람 주어진 숫자 값으로 종료
그것.

그렇지 않고 실행 중 문제가 없었다면, 둔한 사람 C의 값으로 종료
상수 종료_성공. 이것은 일반적으로 XNUMX입니다.

오류가 발생하면 둔한 사람 C 상수 값으로 종료 종료_실패. 이것은
보통 하나.

If 둔한 사람 치명적인 오류로 인해 종료되면 종료 상태는 2입니다. 비 POSIX 시스템에서 이
값이 매핑될 수 있음 종료_실패.

버전 정보


이 매뉴얼 페이지 문서 둔한 사람버전 4.1.

작가


유닉스의 오리지널 버전 AWK Alfred Aho, Peter가 설계하고 구현했습니다.
Weinberger, Bell Laboratories의 Brian Kernighan. Brian Kernighan은 계속해서
유지하고 향상시킵니다.

자유 소프트웨어 재단의 Paul Rubin과 Jay Fenlason은 다음과 같이 썼습니다. 둔한 사람, 호환 가능
의 오리지널 버전으로 AWK Seventh Edition UNIX에 배포되었습니다. 존 우즈
여러 버그 수정에 기여했습니다. David Trueman, Arnold Robbins의 공헌,
만든 둔한 사람 새 버전의 UNIX와 호환 AWK. 아놀드 로빈스는 현재
유지 보수.

만나다 둔한 사람: 유효한 AWK 프로그램 작성 기여자의 전체 목록은 둔한 사람 및 그
선적 서류 비치.

을 참조 README 에 파일을 둔한 사람 메인테이너에 대한 최신 정보 배포
현재 지원되는 포트.

곤충 보고서


에서 버그를 발견하면 둔한 사람, 다음 주소로 전자 메일을 보내주십시오. bug-gawk@gnu.org. 주십시오
귀하의 운영 체제와 개정판, 버전을 포함하십시오. 둔한 사람 (의 둔한 사람 --번역),
컴파일에 사용한 C 컴파일러, 테스트 프로그램 및 데이터
문제를 재현할 수 있습니다.

버그 리포트를 보내기 전에 다음을 수행하십시오. 먼저 다음이 있는지 확인합니다.
최신 버전 둔한 사람. 많은 버그(일반적으로 미묘한 버그)는 각 릴리스에서 수정됩니다.
귀하의 것이 오래된 경우 문제가 이미 해결되었을 수 있습니다. 둘째, 참조하십시오
환경 변수를 설정하는 경우 LC_ALLLC_ALL=C 사물이 당신처럼 행동하게 만듭니다.
예상하다. 그렇다면 로케일 문제이며 버그일 수도 있고 아닐 수도 있습니다. 마지막으로, 제발
이 매뉴얼 페이지와 참조 설명서를 주의 깊게 읽고 당신이 생각하는 것이 올바른지 확인하십시오.
버그는 실제로 언어의 단점이 아닙니다.

당신이 무엇을 하든지 않습니다. 에 버그 보고서 게시 comp.lang.awk. 동안 둔한 사람 개발자
때때로 이 뉴스 그룹을 읽고, 버그 보고서를 게시하면 신뢰할 수 없는 보고 방법이 있습니다.
버그. 대신 위에 제공된 전자 메일 주소를 사용하십시오. 정말.

GNU/Linux 또는 BSD 기반 시스템을 사용하는 경우 다음 주소로 버그 보고서를 제출할 수 있습니다.
배포판 공급업체. 괜찮습니다. 하지만 공식 담당자에게 사본을 보내주세요.
버그 보고서가 다음 주소로 전달된다는 보장이 없기 때문에 이메일 주소도
전에, 둔한 사람 유지 보수.

onworks.net 서비스를 사용하여 gawk 온라인 사용



최신 Linux 및 Windows 온라인 프로그램