Skip to main content

Gawk - 리눅스 명령 - 유닉스 명령

리눅스동영상강의 10장 기본 명령어1 (유월 2026)

리눅스동영상강의 10장 기본 명령어1 (유월 2026)
Anonim

이름

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

개요

둔한 사람 POSIX 또는 GNU 스타일 옵션 -에프 프로그램 파일 -- 파일 …둔한 사람 POSIX 또는 GNU 스타일 옵션 -- 프로그램 텍스트 파일 …

Pgawk POSIX 또는 GNU 스타일 옵션 -에프 프로그램 파일 -- 파일 …Pgawk POSIX 또는 GNU 스타일 옵션 -- 프로그램 텍스트 파일 …

기술

둔한 사람 GNU 프로젝트가 AWK 프로그래밍 언어를 구현 한 것입니다. 이는 POSIX 1003.2 명령 언어 및 유틸리티 표준에있는 언어의 정의를 따릅니다. 이 버전은 다음 설명의 내용을 기반으로합니다. AWK 프로그래밍 언어 , Aho, Kernighan 및 Weinberger가 System V 릴리스 4 버전의 UNIX에 추가 된 기능을 제공합니다 awk . 둔한 사람 최신 Bell 연구소 제공 awk 확장 기능 및 여러 GNU 관련 확장 기능을 제공합니다.

Pgawk 프로파일 링 버전 둔한 사람 . 그것은 모든면에서 동일합니다. 둔한 사람 단, 프로그램이 더 느리게 실행되며 파일에서 실행 프로필이 자동으로 생성됩니다 awkprof.out 완료되면. 자세한 내용은 --윤곽 옵션을 선택하십시오.

명령 행은 다음과 같은 옵션으로 구성됩니다. 둔한 사람 자체, AWK 프로그램 텍스트 ( -에프 또는 --파일 옵션) 및 값을 사용할 수 있습니다. ARGCARGV 미리 정의 된 AWK 변수.

옵션 형식

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

POSIX 표준에 따라, 둔한 사람 특정 옵션은 인수를 통해 제공됩니다. -W 선택권. 배수 -W 옵션을 각각 제공 할 수 있습니다. -W 옵션에는 다음과 같이 해당하는 긴 옵션이 있습니다. 긴 옵션에 대한 인수는 = 기호를 삽입 할 수 있습니다. 또는 다음 명령 행 인수에서 제공 될 수 있습니다. 약어가 고유 한 경우 긴 옵션은 축약 될 수 있습니다.

옵션

둔한 사람 사전 순으로 나열된 다음 옵션을 허용합니다.

-에프 FS

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

-V var =

--양수인 var = 발 값 지정 발 변수에 var , 프로그램 실행이 시작되기 전에. 이러한 변수 값은 시작 AWK 프로그램의 블록.

-에프 프로그램 파일

--파일 프로그램 파일 파일에서 AWK 프로그램 소스 읽기 프로그램 파일 , 대신 첫 번째 명령 줄 인수에서. 배수 -에프 (또는 --파일) 옵션을 사용할 수 있습니다.

-mf NNN

-씨 NNN 다양한 메모리 한계를 값으로 설정하십시오. NNN . 그만큼 에프 플래그는 최대 필드 수를 설정하고 아르 자형 플래그는 최대 레코드 크기를 설정합니다. 이 두 플래그와 -엠 옵션은 Bell Laboratories 연구 버전의 UNIX awk . 그들은 다음에 의해 무시됩니다. 둔한 사람 이후 둔한 사람 사전 정의 된 제한이 없습니다.

-W compat

-W 전통

--compat

--전통적인 에서 실행 적합성 방법. 호환 모드에서, 둔한 사람 유닉스와 똑같이 행동한다. awk ; GNU 특정 확장은 인식되지 않습니다. 사용 --전통적인 이 옵션의 다른 형태보다 선호됩니다. 만나다 GNU 확장에 대한 자세한 내용은 아래를 참조하십시오.

-W 카피 레프트

-W 저작권

--copyleft

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

-W 덤프 변수= 파일

--dump-variables= 파일 전역 변수, 그 유형 및 최종 값의 정렬 된 목록을 파일 . 없는 경우 파일 가 제공되고, 둔한 사람 이름이 지정된 파일을 사용합니다. awkvars.out 현재 디렉토리에서.

모든 전역 변수 목록을 갖는 것이 프로그램의 인쇄상의 오류를 찾는 좋은 방법입니다. 함수가 많은 큰 프로그램이 있고 함수가 실수로 전역 변수를 사용하지 않도록하려면이 옵션을 사용하십시오. (이것은 간단한 변수 이름을 사용하는 것이 쉬운 실수입니다. 나는, j, 등등.)

-W 도움

-W 사용법

--도움

--용법 표준 출력에서 ​​사용 가능한 옵션의 비교적 짧은 요약을 인쇄하십시오. (당 GNU 코딩 표준 ,이 옵션을 사용하면 즉시 종료됩니다.

-W 보풀= 치명적인

- 린트= 치명적인 다른 AWK 구현에 대해 모호하거나 이식 할 수없는 구문에 대한 경고를 제공합니다. 선택 인수 인 치명적인, 보푸라기 경고가 치명적인 오류가됩니다. 이것은 과감 할 수도 있지만, 그 사용은 분명히 AWK 프로그램의 개발을 장려 할 것입니다.

- 보푸라기가 오래된

- 린트 - 올드 원래 Unix 버전으로 이식 할 수없는 구문에 대한 경고 제공 awk .

-W gen-po

- 게 - 포 AWK 프로그램을 스캔하고 파싱하고 GNU를 생성합니다. .po 형식 파일을 프로그램의 모든 현지화 가능 문자열에 대한 항목과 함께 표준 출력에 저장하십시오. 프로그램 자체는 실행되지 않습니다. GNU보기 gettext 자세한 정보는 .po 파일.

-W 비 - 소수 데이터

--non-decimal-data 입력 데이터에서 8 진수 및 16 진수 값을 인식합니다. 이 옵션을 사용할 때는 매우주의하십시오!

-W posix

--posix 켜기 적합성 모드와 다음 추가 제한이 있습니다.

*

엑스 이스케이프 시퀀스가 ​​인식되지 않습니다.

*

스페이스 및 탭만 필드 분리 자로 사용됩니다. FS newline은 단일 공백으로 설정됩니다.

*

이후에 줄을 계속할 수 없습니다. ?:.

*

동의어 기능 키워드 기능 인식되지 않습니다.

*

연산자 ****= 대신에 사용할 수 없다. ^^=.

*

그만큼 fflush () 기능을 사용할 수 없습니다.

-W 프로필= prof_file

--윤곽= prof_file 프로파일 링 데이터를 다음으로 보냅니다. prof_file . 기본값은 awkprof.out. 같이 달릴 때 둔한 사람 프로필은 프로그램의 "꽤 인쇄 된"버전 일뿐입니다. 같이 달릴 때 Pgawk 프로파일에는 왼쪽 여백에있는 프로그램의 각 명령문 실행 횟수와 각 사용자 정의 함수에 대한 함수 호출 수가 포함됩니다.

-W 간격 재 지정

--re-interval 사용을 활성화하십시오. 구간 표현 정규식 일치 (see 정규 표현식, 아래). 간격 표현은 AWK 언어에서 전통적으로 사용 가능하지 않았습니다. POSIX 표준은이를 추가하여 awk 과 egrep 서로 일관되게. 그러나 이들의 사용은 오래된 AWK 프로그램을 망칠 가능성이 있습니다. 둔한 사람 이 옵션으로 요청한 경우에만 제공하거나 --posix 이 지정됩니다.

-W 출처 프로그램 텍스트

--출처 프로그램 텍스트 용도 프로그램 텍스트 AWK 프로그램 소스 코드. 이 옵션을 사용하면 라이브러리 함수를 쉽게 섞을 수 있습니다 ( -에프--파일 옵션)을 명령 줄에 입력 된 소스 코드로 대체합니다. 이것은 주로 쉘 스크립트에서 사용되는 중대형 AWK 프로그램 용입니다.

-W 버전

--번역 이 사본의 버전 정보를 인쇄하십시오. 둔한 사람 표준 출력에. 이것은 주로 현재 사본이 둔한 사람 Free Software Foundation이 배포하는 내용과 관련하여 귀하의 시스템에 최신 버전이 설치되어 있어야합니다. 이는 버그를보고 할 때도 유용합니다. (당 GNU 코딩 표준 ,이 옵션을 사용하면 즉시 종료됩니다.

-- 옵션의 끝을 알립니다. 이는 AWK 프로그램 자체에 "-"로 시작하는 추가 인수를 허용하는 데 유용합니다. 대부분의 다른 POSIX 프로그램에서 사용되는 인수 구문 분석 규칙과 일관성을 유지하기 위해 주로 사용됩니다.

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

AWK 프로그램 실행

AWK 프로그램은 일련의 패턴 동작 명령문과 선택적 함수 정의로 구성됩니다.

무늬 { 행동 진술 }기능 이름 ( 매개 변수 목록 ) { 성명 }

둔한 사람 먼저 프로그램 소스를 프로그램 파일 (들)이 지정되면, 인수들로부터 --출처또는 명령 행의 첫 번째 비표준 인수에서. 그만큼 -에프--출처 옵션은 명령 행에서 여러 번 사용될 수 있습니다. 둔한 사람 마치 프로그램 텍스트를 읽습니다. 프로그램 파일 s와 명령 줄 원본 텍스트가 함께 연결되었습니다. 이는 AWK 함수를 사용하는 새로운 AWK 프로그램에 AWK 함수를 포함하지 않고도 AWK 함수 라이브러리를 빌드하는 데 유용합니다. 또한 라이브러리 함수를 명령 행 프로그램과 혼합하는 기능을 제공합니다.

환경 변수 AWKPATH 이름이 지정된 소스 파일을 찾을 때 사용할 검색 경로를 지정합니다. -에프 선택권. 이 변수가 없으면 기본 경로는 다음과 같습니다.": / usr / local / share / awk". (실제 디렉토리는 방법에 따라 다를 수 있습니다. 둔한 사람 빌드되고 설치되었습니다.) 파일 이름이 -에프 옵션에``/ ''문자가 포함되어 있으면 경로 검색이 수행되지 않습니다.

둔한 사람 다음 순서로 AWK 프로그램을 실행합니다. 먼저, 변수 지정을 통해 지정된 모든 변수 지정 -V 옵션이 수행됩니다. 다음 것, 둔한 사람 프로그램을 내부 형식으로 컴파일합니다. 그때, 둔한 사람 코드를 시작 블록 (있는 경우)을 삭제 한 다음 해당 파일에있는 각 파일을 읽습니다. ARGV 정렬. 명령 행에 이름이 지정된 파일이 없으면, 둔한 사람 표준 입력을 읽습니다.

명령 줄에있는 파일 이름의 형식이 var = 발 그것은 변수 할당으로 취급됩니다. 변수 var 값이 지정됩니다. 발 . (이것은 시작 블록이 실행되었습니다.) 명령 행 변수 할당은 입력이 필드와 레코드로 분리되는 방식을 제어하기 위해 AWK가 사용하는 변수에 동적으로 값을 할당하는 데 가장 유용합니다. 단일 데이터 파일에 대해 여러 번 통과해야하는 경우에도 상태를 제어하는 ​​데 유용합니다.

특정 요소의 값이 ARGV 비었다 (''), 둔한 사람 그걸 건너 뜁니다.

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

마지막으로, 모든 입력이 모두 소모 된 후, 둔한 사람 코드를 종료 블록 (있는 경우).

변수, 레코드 및 필드

AWK 변수는 동적입니다. 그들은 처음 사용될 때 존재하게됩니다. 이들의 값은 사용 방법에 따라 부동 소수점 숫자 또는 문자열이거나 둘 다입니다. AWK는 또한 1 차원 배열을 가지고 있습니다. 여러 차원의 배열을 시뮬레이션 할 수 있습니다. 프로그램이 실행될 때 몇 가지 사전 정의 된 변수가 설정됩니다. 이것들은 필요에 따라 서술 될 것이며 아래에 요약 될 것이다.

기록

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

전지

각 입력 레코드가 읽혀지면, 둔한 사람 기록을 전지 ,의 가치를 사용하여 FS 변수를 필드 구분 기호로 사용하십시오. 만약 FS 단일 문자이면 필드는 해당 문자로 구분됩니다. 만약 FS null 문자열이면 각 개별 문자는 별도의 필드가됩니다. 그렇지 않으면, FS 정규 표현식이 될 것으로 예상됩니다. 특별한 경우에 FS 공백 및 / 또는 탭 및 / 또는 줄 바꿈을 사용하여 필드를 구분합니다. (하지만 --posix, 아래). 노트: 의 가치 이모 니세 (아래 참조) 또한 필드가 분할 될 때 영향을줍니다. FS 정규 표현식이며, 레코드가 RS 정규식입니다.

만약 FIELDWIDTHS 변수는 공백으로 구분 된 숫자 목록으로 설정되며, 각 필드는 고정 폭을 가질 것으로 예상됩니다. 둔한 사람 지정된 너비를 사용하여 레코드를 분할합니다. 의 가치 FS 무시됩니다. 새 값 지정 FS 사용을 재정의하다 FIELDWIDTHS, 기본 동작을 복원합니다.

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

n = 5$ n 인쇄하기

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

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

존재하지 않는 입력란에 대한 참조 (예 : $ NF) 널 문자열을 생성합니다. 그러나, 존재하지 않는 필드 (예를 들어, $ (NF + 2) = 5)의 가치를 증가시킨다. NF, null 문자열을 값으로 갖는 모든 개입 필드를 작성하고 $0 필드가 값으로 분리되어 재 계산됩니다. OFS. 음수로 표시된 필드를 참조하면 치명적인 오류가 발생합니다. 감소 NF 새 값을 지나친 필드의 값을 잃게하고, $0 필드가 값으로 분리되어 재 계산됩니다. OFS.

기존 필드에 값을 할당하면 전체 레코드가 다시 작성됩니다. $0 참조됩니다. 마찬가지로 값을 $0 레코드를 다시 분할하여 필드의 새 값을 만듭니다.

기본 제공 변수

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

ARGC

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

ARGIND

의 색인 ARGV 처리중인 현재 파일의

ARGV

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

BINMODE

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

속임수

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

환경

현재의 환경의 값을 포함한 배열입니다. 배열은 환경 변수에 의해 색인되며 각 요소는 해당 변수의 값입니다 (예 :ENVIRON "HOME" 아마도 / home / arnold). 이 배열을 변경해도 프로그램이 보는 환경에는 영향을주지 않습니다. 둔한 사람 리디렉션 또는 체계()기능.

ERRNO

시스템 오류가 발생하면 getline, 읽는 동안 getline, 또는 닫기(), 그 다음에 ERRNO 오류를 설명하는 문자열을 포함합니다. 이 값은 영어가 아닌 언어로 번역 된 것입니다.

FIELDWIDTHS

필드 폭의 공백으로 구분 된 목록. 설정되면, 둔한 사람 값을 사용하는 대신 고정 폭의 필드로 입력을 구문 분석합니다. FS 변수를 필드 구분 기호로 사용하십시오.

파일 이름

현재 입력 파일의 이름.명령 행에 파일이 지정되지 않은 경우, 파일 이름 ``- ''입니다. 하나, 파일 이름 내부에서 정의되지 않았습니다. 시작 블록 ( getline).

FNR

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

FS

입력 필드 구분 기호로, 기본적으로 공백입니다. 만나다 전지, 위에.

이모 니세

모든 정규 표현식과 문자열 연산의 대소 문자를 구분합니다. 만약 이모 니세 0이 아닌 값을 가지면 규칙에서 문자열 비교 및 ​​패턴 일치, 다음으로 필드 분할 FS, RS,와 일치하는 정규 표현식 ~!~, 그리고 gensub (), gsub (), 색인(), 시합(), 스플릿(), 및 보결() 기본 제공 함수는 모두 정규식 연산을 수행 할 때 대 / 소문자를 무시합니다. 노트: 배열 첨자 아니 영향을 받거나 asort () 기능.

따라서, 만약 이모 니세 0과 같지 않다면, / aB / 모든 문자열을 일치시킵니다. "ab", "aB","Ab", 및 "AB". 모든 AWK 변수와 마찬가지로, 이모 니세 모든 정규 표현식과 문자열 연산은 대개 대소 문자를 구별합니다. Unix에서는 대소 문자를 무시할 때 전체 ISO 8859-1 Latin-1 문자 세트가 사용됩니다.

LINT

동적 제어를 제공합니다. - 린트 옵션을 AWK 프로그램 내에서 사용할 수 있습니다. 사실 일 때, 둔한 사람 lint 경고를 인쇄합니다. 거짓 일 경우, 그렇지 않습니다. 문자열 값이 할당되면 "치명적인", 보푸라기 경고가 치명적인 오류가됩니다. - 린트 = 치명적인. 다른 모든 실제 값은 경고를 인쇄합니다.

NF

현재 입력 레코드의 필드 수

NR

지금까지 표시된 총 입력 레코드 수입니다.

OFMT

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

OFS

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

ORS

출력 레코드 분리 기호, 기본적으로 개행.

PROCINFO

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

PROCINFO "egid"

의 가치 getegid (2) 시스템 콜.

PROCINFO "euid"

의 가치 geteuid (2) 시스템 콜.

PROCINFO "FS"

"FS" 필드 분할로 FS 효력이있다, 또는 "FIELDWIDTHS" 필드 분할로 FIELDWIDTHS 효과가있다.

PROCINFO "gid"

의 가치 이득 (2) 시스템 콜.

PROCINFO "pgrpid"

현재 프로세스의 프로세스 그룹 ID.

PROCINFO "pid"

현재 프로세스의 프로세스 ID.

PROCINFO "ppid"

현재 프로세스의 부모 프로세스 ID

PROCINFO "uid"

의 가치 getuid (2) 시스템 콜.

RS

입력 레코드 분리 기호, 기본적으로 개행.

RT

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

RSTART

에 의해 매치 된 첫 번째 문자의 인덱스. 시합(); 일치하는 항목이 없으면 0입니다. (이것은 문자 인덱스가 하나에서 시작한다는 것을 의미합니다.)

RLENGTH

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

SUBSEP

배열 요소에서 여러 개의 첨자를 구분하는 데 사용되는 문자입니다 (기본값). ' 034'.

텍스트

AWK 프로그램의 텍스트 도메인. 프로그램의 문자열에 대한 지역화 된 번역을 찾는 데 사용됩니다.

배열

배열은 대괄호 사이의 표현식으로 첨자 화됩니다 (). 표현식이 표현식 목록 인 경우 ( expr , expr …) 배열 첨자는 각 표현식의 (문자열) 값의 연결로 구성된 문자열이며, 각 표현식의 값은 SUBSEP 변하기 쉬운. 이 기능은 차원이 지정된 배열을 시뮬레이트하는 데 사용됩니다. 예 :

i = "A"; j = "B"; k = "C"x i, j, k = "안녕하세요, 세계 n"

문자열을 할당한다. "여보세요, 세상 n" 배열 요소에 엑스 문자열에 의해 색인된다."A 034B 034C". AWK의 모든 배열은 연관성이 있습니다. 즉 문자열 값으로 인덱싱됩니다.

특수 연산자 …에서 ~에서 사용할 수 있습니다. 만약 또는 동안 배열에 특정 값으로 구성된 인덱스가 있는지 확인합니다.

if (배열의 val) print 배열 val

배열에 여러 개의 첨자가 있으면 (i, j) 배열로.

그만큼 …에서 구조는 또한 …에 대한 루프를 사용하여 배열의 모든 요소를 ​​반복합니다.

배열을 사용하여 요소를 삭제할 수 있습니다. 지우다 성명서. 그만큼 지우다 명령문은 또한 첨자없이 배열 이름을 지정하는 것만으로 배열의 전체 내용을 삭제하는 데 사용될 수 있습니다.

변수 타이핑 및 변환

변수 및 필드는 (부동 소수점) 숫자 또는 문자열이거나 둘 다일 수 있습니다. 변수의 값이 문맥에 따라 어떻게 해석되는지. 숫자 식에서 사용되는 경우 숫자로 처리되고 문자열로 사용되면 문자열로 처리됩니다.

변수를 강제로 숫자로 취급하려면 0을 추가하십시오. 강제로 문자열로 처리하고, 널 (null). 자 열과 결합시킵니다.

문자열을 숫자로 변환해야하는 경우 변환은 다음을 사용하여 수행됩니다. strtod (삼). 숫자는 값을 사용하여 문자열로 변환됩니다. 속임수 에 대한 형식 문자열로 sprintf (3) 변수의 숫자 값을 인수로 사용합니다. 그러나 AWK의 모든 숫자가 부동 소수점이지만 정수 값은 항상 정수로 변환됩니다. 따라서, 주어진

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

변수 문자열 값이이다. '12' 하지 '12.00'.

둔한 사람 다음과 같이 비교를 수행합니다. 두 변수가 숫자 인 경우 숫자가 비교됩니다. 한 값이 숫자이고 다른 값이 "숫자 문자열"인 문자열 값을 가지면 비교도 숫자로 수행됩니다. 그렇지 않으면 숫자 값이 문자열로 변환되고 문자열 비교가 수행됩니다. 물론 두 개의 문자열이 문자열로 비교됩니다. POSIX 표준은 문자열 상수에도 모든 곳에서 "숫자 문자열"개념을 적용합니다. 그러나 이것은 분명히 부정확하며 둔한 사람 이러면 안돼. 다행히 표준의 다음 버전에서 수정되었습니다.

문자열 상수 (예 : '57',있다 아니 숫자 문자열 인 경우 문자열 상수입니다. ``숫자 문자열 ''의 개념은 필드에만 적용되며, getline 입력, 파일 이름, ARGV 집단, 환경 배열에 의해 생성 된 배열 요소 및 요소 스플릿() 그것은 숫자 문자열입니다. 기본 아이디어는 사용자 입력 숫자로 보이는 사용자 입력 만이 그런 방식으로 처리되어야합니다.

초기화되지 않은 변수는 숫자 값 0과 문자열 값 ""(null 또는 빈 문자열)을가집니다.

8 진수 및 16 진수 상수

버전 3.1부터 고크, AWK 프로그램 소스 코드에서 C 스타일의 8 진수 및 16 진수 상수를 사용할 수 있습니다. 예를 들어, 8 진수 값 011 십진수와 같습니다. 9, 16 진수 값 0x11 십진수 17입니다.

문자열 상수

AWK의 문자열 상수는 큰 따옴표로 묶인 일련의 문자입니다 ('). 문자열 내에서 특정 이스케이프 시퀀스 C에서와 같이 인식됩니다.

\

리터럴 백 슬래시.

에이

``경고 ''문자; 보통 ASCII BEL 문자.

역행 키이.

에프

form-feed.

줄 바꿈.

아르 자형

캐리지 리턴.

수평 탭.

V

수직 탭.

엑스 16 진수

다음의 16 진수 문자열로 표현되는 문자 엑스. ANSIC에서와 같이 16 진법을 따르는 모든 문자는 이스케이프 시퀀스의 일부로 간주됩니다. (이 기능은위원회의 언어 디자인에 대해 알려줄 것입니다.) 예를 들어, " x1B" ASCIIESC (이스케이프) 문자입니다.

ddd

1, 2, 또는 3 자리수의 8 진수로 나타내지는 문자. 예 : ' 033' ASCII ESC (이스케이프) 문자입니다.

기음

리터럴 문자 기음 .

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

호환 모드에서 8 진수 및 16 진수 이스케이프 시퀀스로 표시되는 문자는 정규식 상수에 사용되는 경우 그대로 취급됩니다. 그러므로, / a 52b / ~에 해당합니다./ a * b /.

패턴과 액션

AWK는 라인 지향 언어입니다. 패턴이 먼저오고 그 다음에 행동이옵니다. 행동 진술은 {}. 패턴이 누락되거나 조치가 누락 될 수 있지만, 물론 둘 모두가 누락 될 수는 없습니다. 패턴이 누락 된 경우, 조치는 입력의 모든 단일 레코드에 대해 실행됩니다. 누락 된 행동은

{인쇄}

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

코멘트는``# ''문자로 시작하여 줄 끝까지 계속됩니다. 문장을 구분하기 위해 빈 줄을 사용할 수 있습니다. 일반적으로 명령문은 개행 문자로 끝나지 만,``, '', {, ?, :, &&, 또는 ||. 끝나는 줄 해야 할 것 또는 그밖에 또한 다음 진술 문을 자동으로 계속 사용하도록하십시오. 다른 경우에 ''를 사용하여 줄을 계속할 수 있습니다.이 경우 줄 바꿈은 무시됩니다.

``; ''로 여러 문장을 구분하면 한 줄에 여러 문장을 넣을 수 있습니다. 이것은 패턴 - 액션 쌍의 액션 부분 (일반적인 경우)과 패턴 - 액션 명령문 자체 모두에 적용됩니다.

패턴

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

시작 종료 / 정규 표현식 / 관계형 표현 무늬 && 무늬 무늬 || 무늬 무늬 ? 무늬 : 무늬 ( 무늬 ) ! 무늬 pattern1 , pattern2

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

에 대한 / 정규 표현식 / 패턴의 경우, 연관된 명령문은 정규 표현식과 일치하는 각 입력 레코드에 대해 실행됩니다. 정규 표현식은 egrep (1), 아래에 요약되어 있습니다.

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

그만큼 &&, ||, 및 ! 연산자는 C에서와 같이 각각 논리적 AND, 논리 OR 및 논리 NOT입니다. 이들은 C와 마찬가지로 단락 회로 평가를 수행하고 더 원시 패턴 표현을 결합하는 데 사용됩니다. 대부분의 언어 에서처럼 괄호를 사용하여 평가 순서를 변경할 수 있습니다.

그만큼 ?: 연산자는 C에서 같은 연산자와 같습니다. 첫 번째 패턴이 true이면 테스트에 사용 된 패턴이 두 번째 패턴이고, 그렇지 않으면 세 번째 패턴입니다. 두 번째 및 세 번째 패턴 중 하나만 평가됩니다.

그만큼 pattern1 , pattern2 표현의 형식을 a라고합니다. 범위 패턴 . 일치하는 레코드로 시작하는 모든 입력 레코드를 찾습니다. pattern1 , 일치하는 레코드가 될 때까지 계속 pattern2 , 포함한. 패턴 표현의 다른 종류와 결합하지 않습니다.

정규 표현식

정규 표현식은 egrep . 그들은 다음과 같이 문자로 구성됩니다 :

기음

메타 문자가 아닌 사람과 일치한다. 기음 .

기음

리터럴 문자와 일치합니다. 기음 .

.

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

^

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

$

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

알파벳…

문자 목록, 모든 문자와 일치 알파벳… .

^ 알파벳…

부정 된 문자 목록, 알파벳… .

r1 | r2

교번 : r1 또는 r2 .

r1r2

연결 : 일치 r1 , 그리고 r2 .

아르 자형 +

하나 이상의 일치 아르 자형 '에스.

아르 자형 *

0 개 이상 일치 아르 자형 '에스.

아르 자형 ?

0 또는 1과 일치합니다. 아르 자형 '에스.

( 아르 자형 )

그룹화 : 일치 아르 자형 .

아르 자형 {}

아르 자형 {,}

아르 자형 {,} 중괄호 안에있는 하나 또는 두 개의 숫자는 구간 표현 . 중괄호에 하나의 숫자가 있으면 앞의 정규 표현식 아르 자형 되풀이하다 엔 타임스. 쉼표로 구분 된 두 개의 숫자가있는 경우, 아르 자형 되풀이하다 엔 에 엠 타임스. 하나의 숫자 뒤에 쉼표가 오는 경우 아르 자형 적어도 반복된다. 엔 타임스.

간격 식은 다음 중 하나 인 경우에만 사용할 수 있습니다. --posix 또는 --re-interval 명령 행에 지정됩니다.

와이

단어의 시작 또는 끝에서 빈 문자열을 찾습니다.

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

<

단어의 시작 부분에있는 빈 문자열과 일치합니다.

>

단어의 끝에있는 빈 문자열과 일치합니다.

w

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

W

단어 구성 요소가 아닌 문자를 찾습니다.

`

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

'

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

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

문자 클래스 는 POSIX 표준에서 소개 된 새로운 기능입니다. 문자 클래스는 특정 속성이있는 문자 목록을 설명하기위한 특수 표기법이지만 실제 문자 자체는 국가마다 다를 수 있으며 문자 집합과 문자 집합간에 다를 수 있습니다. 예를 들어, 알파벳 문자의 개념은 미국과 프랑스에서 다릅니다.

문자 클래스는 정규 표현식에서만 유효합니다. 내부 문자리스트의 대괄호. 문자 클래스는 다음과 같이 구성됩니다. :, 클래스를 나타내는 키워드 및 :. POSIX 표준에 정의 된 문자 클래스는 다음과 같습니다.

: alnum :

영숫자 문자.

: alpha :

영문자.

:공백:

스페이스 또는 탭 문자.

: cntrl :

제어 문자.

:손가락:

숫자.

:그래프:

인쇄 및 표시 가능한 문자. (공백은 인쇄 가능하지만 보이지는 않습니다. 에이 둘 다입니다.)

:보다 낮은:

소문자 알파벳 문자.

:인쇄:

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

: punct :

구두점 문자 (문자, 숫자, 제어 문자 또는 공백 문자가 아닌 문자).

:공간:

공백 문자 (예 : 공백, 탭 및 양식 공백).

:높은:

대문자 알파벳 문자.

: xdigit :

문자는 16 진수입니다.

예를 들어 POSIX 표준 이전에 영숫자를 일치 시키려면 다음과 같이 작성해야합니다. / A-Za-z0-9 /. 문자 세트에 다른 영문자가있는 경우이 문자는 문자 세트와 일치하지 않으며 문자 세트가 ASCII와 다른 방식으로 배열 된 경우 ASCII 영숫자 문자와 일치하지 않을 수도 있습니다. POSIX 문자 클래스를 사용하면/ : alnum : /이것은 문자 세트의 알파벳 및 숫자와 일치합니다.

문자 목록에는 두 개의 추가 특수 시퀀스가 ​​나타날 수 있습니다. 이것은 비 ASCII 문자 집합에 적용되며 단일 문자를 가질 수 있습니다 ( 요소 대조 )는 하나 이상의 문자로 표현되며, 대조 , 또는 정렬, 목적. 예를 들어 불어로는 'e'와 grave-accented e가 동일합니다.

조합 기호

조합 기호는 다음에 포함 된 복수 문자 조합 요소입니다. ... 예를 들어, if ch 다음은 조합 요소입니다. .ch. 이 조합 요소와 일치하는 정규 표현식이며, ch 다음 중 하나와 일치하는 정규 표현식입니다. 기음 또는 h.

동등한 클래스

등가 클래스는 동등한 문자 목록에 대한 로캘 별 이름입니다. 이름은에 묶여있다. ==. 예를 들어, 이름 이자형 "e", "e", "e"를 모두 나타낼 수 있습니다. "이 경우, = = = 다음 중 하나와 일치하는 정규식입니다. 이자형, 이자형', 또는 e`.

이러한 기능은 영어 이외의 언어 로켈에서 매우 유용합니다. 라이브러리 함수는 둔한 사람 정규식 일치를 위해 POSIX 문자 클래스 만 인식합니다. 조합 기호 또는 등가 클래스를 인식하지 못합니다.

그만큼 와이, , <, >, w, W, `, 및 ' 연산자는 둔한 사람 ; 그것들은 GNU 정규 표현식 라이브러리의 기능을 기반으로하는 확장입니다.

다양한 명령 행 옵션은 둔한 사람 정규식의 문자를 해석합니다.

옵션 없음

기본 경우, 둔한 사람 위에서 설명한 POSIX 정규 표현식과 GNU 정규 표현 연산자의 모든 기능을 제공합니다. 그러나 간격식이 지원되지 않습니다.

--posix

POSIX 정규 표현식 만 지원됩니다. GNU 연산자는 특별하지 않습니다. (예 : w 리터럴과 일치하다 w). 간격식이 허용됩니다.

--전통적인

전통적인 유닉스 awk 정규식이 일치합니다. GNU 연산자는 특별하지 않으며, 간격 표현식을 사용할 수없고 POSIX 문자 클래스도 없습니다 (: alnum : 등등). 8 진수 및 16 진수 이스케이프 시퀀스로 설명하는 문자는 정규 표현식 메타 문자를 나타내는 경우 라해도 문자 그대로 처리됩니다.

--re-interval

정규 표현식에서 간격 표현식을 허용합니다. --전통적인 제공되었습니다.

행위

동작 문은 중괄호로 묶여 있으며, {}. 액션 문은 대부분의 언어에서 볼 수있는 일반적인 할당, 조건문 및 반복 문으로 구성됩니다. 사용할 수있는 연산자, 제어문 및 입출력 문은 C에있는 문 뒤에 패턴이 지정됩니다.

연산자

우선 순위가 낮은 순으로 AWK의 연산자는 다음과 같습니다.

()

그룹화

$

필드 참조.

++ --

증가 및 감소, 접두사 및 접미어.

^

지수화 (** 또한 사용될 수있다. **= 대입 연산자의 경우).

+ - !

단항 플러스, 단항 마이너스 및 논리적 부정.

* / %

곱셈, 나눗셈 및 모듈러스.

+ -

더하기와 빼기.

공간

문자열 연결.

< >

<= >=

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

~ !~

정규 표현식 일치, 부정합 일치. 노트: 상수 정규식을 사용하지 마십시오 (/ foo /)의 왼쪽에 ~ 또는 !~. 오른쪽에 하나만 사용하십시오. 표현식 / foo / ~ 특급 ~와 같은 의미를 갖는다. (($ 0 ~ / foo /) ~ 특급 ). 이것은 대개 아니 의도 한 것.

…에서

배열 구성원.

&&

논리적 AND.

||

논리적 OR.

?:

C 조건부 표현식. 이것은 형식을 가지고있다. expr1 ? expr2 : expr3 . 만약 expr1 이 참인 경우 표현식의 값은 expr2 그렇지 않으면 expr3 . 오직 하나의 expr2 과 expr3 평가됩니다.

= += -=

*= /= %= ^= 할당. 절대 지정 ( var = ) 운영자 지정 (다른 양식)이 지원됩니다.

제어문

제어문은 다음과 같습니다.

만약 ( 조건 ) 성명서 그밖에 성명서 동안 ( 조건 ) 성명서 해야 할 것 성명서 동안 ( 조건 ) ~을 위해 ( expr1 ; expr2 ; expr3 ) 성명서 ~을 위해 ( var …에서 정렬 ) 성명서 단절 잇다 지우다 정렬 색인 지우다 정렬 출구 표현 { 성명 }

I / O 문

입력 / 출력 명령문은 다음과 같습니다.

닫기( 파일 , 방법 )

파일, 파이프 또는 공동 처리를 닫습니다. 선택적 방법 공동 처리로 양방향 파이프의 한쪽 끝을 닫을 때만 사용해야합니다. 문자열 값이어야합니다. "에" 또는 "에서".

getline

세트 $0 다음 입력 레코드로부터; 세트 NF, NR, FNR.

getline < 파일

세트 $0 다음 기록에서 파일 ; 세트 NF.

getline var

세트 var 다음 입력 레코드로부터; 세트 NR, FNR.

getline var < 파일

세트 var 다음 기록에서 파일 .

명령 | getline var

운영 명령 출력을 $0 또는 var , 위와 같이.

명령 | getline var

운영 명령 출력을 공동 처리로 $0 또는 var , 위와 같이. 공동 프로세스는 둔한 사람 신장.

다음 것

현재 입력 레코드 처리를 중지합니다. 다음 입력 레코드를 읽고 AWK 프로그램의 첫 번째 패턴으로 처리를 시작합니다. 입력 데이터의 끝에 도달하면 종료 블록 (있는 경우)이 실행됩니다.

다음 파일

현재 입력 파일 처리를 중단합니다. 다음 입력 레코드 읽기는 다음 입력 파일에서옵니다. 파일 이름ARGIND 업데이트됩니다. FNR 1로 재설정되고 AWK 프로그램의 첫 번째 패턴으로 처리가 시작됩니다. 입력 데이터의 끝에 도달하면 종료 블록 (있는 경우)이 실행됩니다.

인쇄

현재 레코드를 인쇄합니다. 출력 레코드는 ORS 변하기 쉬운.

인쇄 expr-list

표현식을 인쇄합니다. 각 표현식은 OFS 변하기 쉬운. 출력 레코드는 ORS 변하기 쉬운.

인쇄 expr-list > 파일

표현식을 인쇄합니다. 파일 . 각 표현식은 OFS 변하기 쉬운. 출력 레코드는 ORS 변하기 쉬운.

printf fmt, expr-list

서식을 지정하고 인쇄하십시오.

printf fmt, expr-list > 파일

포맷 및 인쇄 파일 .

체계( cmd-line )

명령을 실행하십시오. cmd-line , 종료 상태를 반환합니다. POSIX가 아닌 시스템에서는 사용할 수 없습니다.

fflush ( 파일 )

열려있는 출력 파일 또는 파이프와 연관된 버퍼를 모두 플러시합니다. 파일 . 만약 파일 가 없으면 표준 출력이 플러시됩니다. 만약 파일 널 문자열이면 열려있는 모든 출력 파일과 파이프의 버퍼가 비워집니다.

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

인쇄 … >> 파일

출력을 파일 .

인쇄 … | 명령

파이프에 씁니다.

인쇄 … | 명령

데이터를 공동 처리로 보냅니다.

그만큼 getline 명령은 파일 끝에서 0을 리턴하고 오류시 -1을 리턴합니다. 오류가 발생하면 ERRNO 문제를 설명하는 문자열을 포함합니다.

노트: 파이프 또는 공동 처리를 사용하는 경우 getline, 또는에서 인쇄 또는 printf 루프 안에서 절대로 필요한 것 용도 닫기() 명령의 새 인스턴스를 만듭니다. AWK는 EOF를 반환 할 때 파이프 또는 공동 프로세스를 자동으로 닫지 않습니다.

printf 문

AWK 버전의 printf 성명서 sprintf () 함수 (아래 참조)는 다음 변환 지정 형식을 허용합니다.

%기음

ASCII 문자. 인수가 %기음 숫자이며, 문자로 취급되어 인쇄됩니다. 그렇지 않으면 인수는 문자열로 간주되며 해당 문자열의 첫 번째 문자 만 인쇄됩니다.

%디, %나는

10 진수 (정수 부분).

% e, % E

양식의 부동 소수점 숫자 - d.dddddde + - dd. 그만큼 %이자형 형식 용도 이자형 대신에 이자형.

%에프

양식의 부동 소수점 숫자 - ddd.dddddd.

% g, % G

용도 %이자형 또는 %에프 전환 중 어느 것이 든 더 짧고 중요하지 않은 0은 억제됩니다. 그만큼%지 형식 용도 %이자형 대신에 %이자형.

%영형

부호없는 8 진수 (정수).

%유 부호없는 10 진수 (다시 정수).

%에스

문자열.

% x, % X

부호없는 16 진수 (정수)입니다. 그만큼 %엑스 형식 용도 ABCDEF 대신에abcdef.

%%

싱글 % 캐릭터; 인수가 변환되지 않습니다.

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

카운트 $

사용 카운트 이 시점에서 서식의 인수. 이것을 위치 지정자 주로 AWK 프로그램의 원본 텍스트가 아닌 번역 된 형식의 문자열에 사용하기위한 것입니다. 이것은 둔한 사람 신장.

-

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

공간

숫자 변환의 경우 양수 값 앞에 공백을두고 음수 값에는 빼기 부호를 붙입니다.

+

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

#

특정 제어 문자에는 "대체 양식"을 사용하십시오. 에 대한 %영형, 선행 제로를 공급하십시오. 에 대한 %엑스, 및 %엑스, 선도적 인 공급 0x 또는 0X 0이 아닌 결과를 나타냅니다. 에 대한 %이자형, %이자형, 및 %에프, 결과는 항상 소수점을 포함합니다. 에 대한 %지, 및 %지후행 0은 결과에서 제거되지 않습니다.

0

선두 0 (제로)는 출력으로 공백 대신에 0을 채워야 함을 나타내는 플래그 역할을합니다. 이는 숫자가 아닌 출력 형식에도 적용됩니다. 이 플래그는 필드 너비가 인쇄 할 값보다 넓은 경우에만 적용됩니다.

필드는이 폭만큼 패딩되어야합니다. 필드는 일반적으로 공백으로 채워집니다. 만약 0플래그가 사용 된 경우, 0으로 채워집니다.

. 미리

인쇄 할 때 사용할 정밀도를 지정하는 숫자입니다. 그 %이자형, %이자형, 및 %에프형식이면 소수점 오른쪽에 인쇄 할 자릿수를 지정합니다. 그 %지, 및 %지 형식의 경우 최대 유효 자릿수를 지정합니다. 그 %디, %영형, %나는, %유, %엑스, 및 %엑스 형식의 경우 인쇄 할 최소 자릿수를 지정합니다. 에 대한 %에스, 인쇄해야 할 문자열에서 최대 문자 수를 지정합니다.

동적 인 폭 과 미리 ANSI C의 기능 printf () 루틴이 지원됩니다. 에이 * 다음 중 어느 쪽인가에 또는 미리 명세로 인해 인수 목록에서 값을 가져옵니다. printf 또는 sprintf (). 동적 폭 또는 정밀도가있는 위치 지정자를 사용하려면 카운트 $* 서식 문자열에. 예를 들어, "% 3 $ * 2 $. * 1 $ s".

특수 파일 이름

I / O 리디렉션을 인쇄 또는 printf 파일로 또는을 통해 getline 파일로부터, 둔한 사람 내부적으로 특정 특수 파일 이름을 인식합니다. 이 파일 이름은에서 상속 된 열린 파일 설명자에 대한 액세스를 허용합니다. 둔한 사람 부모 프로세스 (보통 쉘). 이 파일 이름은 명령 행에서 데이터 파일의 이름을 지정하는 데 사용될 수도 있습니다. 파일 이름은 다음과 같습니다.

/ dev / stdin

표준 입력입니다.

/ dev / stdout

표준 출력.

/ dev / stderr

표준 오류 출력.

/ dev / fd /

열린 파일 설명 자와 연관된 파일 엔 .

이것은 특히 오류 메시지에 유용합니다. 예 :

인쇄 "당신은 그것을 날려 버렸어!" > "/ dev / stderr"

그렇지 않으면 당신은

인쇄 "당신은 그것을 날려 버렸어!" | "cat 1> & 2"

다음 특수 파일 이름은 |& TCP / IP 네트워크 연결을 만들기위한 공동 처리 연산자.

/ inet / tcp / 항구 / 유령 / 항의

로컬 포트에서 TCP / IP 연결을위한 파일 항구 원격 호스트로 유령 원격 포트에 항의 . 포트를 사용하십시오. 0 시스템에서 포트를 선택하도록합니다.

/ inet / udp / 항구 / 유령 / 항의

비슷하지만 TCP / IP 대신 UDP / IP를 사용하십시오.

/ inet / raw / 항구 / 유령 / 항의

나중에 사용하기 위해 예약되어 있습니다.

다른 특수 파일 이름은 실행중인 정보에 대한 액세스를 제공합니다. 둔한 사람 방법. 이 파일 이름은 이제 폐기되었습니다. 사용 PROCINFO 어레이에서 제공하는 정보를 얻을 수 있습니다. 파일 이름은 다음과 같습니다.

/ dev / pid

이 파일을 읽으면 현재 프로세스의 프로세스 ID가 10 진수로 리턴되고 개행 문자로 종료됩니다.

/ dev / ppid

이 파일을 읽으면 현재 프로세스의 상위 프로세스 ID (10 진수)가 개행 문자로 종료됩니다.

/ dev / pgrpid

이 파일을 읽으면 현재 프로세스의 프로세스 그룹 ID가 10 진수로 리턴되고 개행 문자로 종료됩니다.

/ dev / user

이 파일을 읽으면 개행 문자로 끝나는 단일 레코드가 반환됩니다. 필드는 공백으로 구분됩니다. $1 의 가치입니다. getuid (2) 시스템 호출, $2 의 가치입니다. geteuid (2) 시스템 호출, $3 의 가치입니다. 이득 (2) 시스템 콜, $4 의 가치입니다. getegid (2) 시스템 콜. 추가 필드가있는 경우 이는 다음에 의해 반환 된 그룹 ID입니다. getgroups (2). 여러 그룹이 모든 시스템에서 지원되지 않을 수 있습니다.

수치 함수

AWK에는 다음과 같은 내장 산술 기능이 있습니다.

atan2 ( 와이 , 엑스 )

아크 탄젠트를 반환합니다. y / x 라디안 단위.

코사인( expr )

코사인을 반환합니다. expr , 라디안 단위입니다.

exp ( expr )

지수 함수.

int ( expr )

정수로 자릅니다.

로그( expr )

자연 대수 함수.

랜드()

0에서 1 사이의 난수를 반환합니다.

죄( expr )

사인을 구한다. expr , 라디안 단위입니다.

sqrt ( expr )

제곱근 함수입니다.

사드랑 expr )

용도 expr 난수 생성기의 새로운 시드로 사용합니다. 없는 경우 expr 가 제공되면, 시간이 사용됩니다. 반환 값은 난수 생성 프로그램의 이전 시드입니다.

문자열 함수

둔한 사람 다음과 같은 내장 문자열 기능이 있습니다.