awk 기초 튜 토리 얼 (3)

22. 처리 명령 행 인자
awk 는 내 장 된 배열 ARGV 에서 명령 행 인 자 를 받 을 수 있 습 니 다. 명령 awk 를 포함 합 니 다.하지만 awk 에 전 달 된 모든 옵션 은 더 이상 없습니다.ARGV 배열 아래 표 시 는 0 부터 시작 합 니 다.ARGC 는 명령 행 매개 변수 개 수 를 포함 하 는 내장 변수 입 니 다.
23. awk 의 내장 함수
문자열 함수
sub 함수 가 기록 에서 가장 크 고 왼쪽 에 있 는 하위 문자열 의 정규 표현 식 과 일치 하 며 이 문자열 들 을 대체 문자열 로 대체 합 니 다.대상 문자열 이 지정 되 지 않 으 면 전체 기록 을 기본 으로 사용 합 니 다.교 체 는 첫 번 째 일치 할 때 만 발생 합 니 다.
형식: sub (정규 식, 대체 문자열):
sub (regular expression, substitution string, target string)
예 20:
$ awk '{ sub(/test/, "mytest"); print }' testfile
$ awk '{ sub(/test/, "mytest"); $1}; print }' testfile
첫 번 째 예 는 전체 기록 에서 일치 합 니 다. 교 체 는 첫 번 째 일치 가 발생 했 을 때 만 발생 합 니 다.
두 번 째 예 는 전체 기록 의 첫 번 째 도 메 인 에서 일치 하고 교 체 는 첫 번 째 일치 가 발생 할 때 만 발생 합 니 다.
sub 함수 역할 은 sub 와 같 지만 전체 문서 에서 일치 합 니 다.
형식: gsub (정규 식, 대체 문자열)
gsub (regular expression, substitution string, target string)
index 함 수 는 하위 문자열 이 처음으로 일치 하 는 위 치 를 되 돌려 줍 니 다. 오프셋 은 위치 1 부터 시작 합 니 다.
형식: index (string, substring)
length 함수 가 기 록 된 문자 수 를 되 돌려 줍 니 다. 매개 변 수 를 지정 하지 않 으 면 length 함수 가 기 록 된 문자 개 수 를 되 돌려 줍 니 다.
형식: length (string)
length
substr 함 수 는 문자열 이 지정 한 위치 에서 시작 하 는 하위 문자열 을 되 돌려 줍 니 다. 지정 한 길이 가 실제 길 이 를 초과 하면 실제 내용 을 되 돌려 줍 니 다.
형식: substr (string, starting position)
substr (string, starting position, 하위 문자열 길이)
match 함 수 는 문자열 의 정규 표현 식 위치 에 있 는 색인 을 되 돌려 줍 니 다. 지정 한 정규 표현 식 을 찾 지 못 하면 0 을 되 돌려 줍 니 다.match 함 수 는 문자열 의 시작 위치 에 내 장 된 변수 RSTART 를 하위 문자열 로 설정 하고, RLENGTH 는 하위 문자열 의 길이 로 설정 합 니 다.이 변 수 는 substr 함수 에 의 해 해당 모드 의 하위 문자열 을 추출 할 수 있 습 니 다.
형식: match (string, regular expression)
예 21:
$ awk '{start=match("this is a test",/[a-z]+$/); print start}' filename
$ awk '{start=match("this is a test",/[a-z]+$/); print start, RSTART, RLENGTH }'/filename
첫 번 째 인 스 턴 스 인쇄 는 연속 소문 자로 끝 나 는 시작 위치 입 니 다. 여 기 는 11 입 니 다.
두 번 째 인 스 턴 스 는 RSTART 와 RLENGTH 변 수 를 인쇄 합 니 다. 여 기 는 11 (start), 11 (RSTART), 4 (RLENGTH) 입 니 다.
toupper 와 tolower 함 수 는 문자열 크기 간 의 변환 에 사용 할 수 있 으 며, 이 기능 은 gawk 에서 만 유효 합 니 다.
형식: toupper (string)
tolower( string )
split 함 수 는 주어진 구분자 에 따라 문자열 을 배열 로 나 눌 수 있 습 니 다.구분자 가 제공 되 지 않 으 면 현재 FS 값 으로 분할 합 니 다.
형식: split (string, array, field separator)
split( string, array )
예 22:
$ awk '{ split( "20:18:00", time, ":"); print time[2] }' filename
시간 을 콜론 에 따라 time 배열 로 나 누고 두 번 째 배열 요 소 를 18 로 표시 합 니 다.
sprintf 함수 가 지정 한 형식의 표현 식 을 되 돌려 줍 니 다.sprintf 함수 에서 printf 함수 의 형식 규범 을 사용 할 수 있 습 니 다.
형식: variable = sprintf ("형식 설명 이 포 함 된 문자열", 표현 식 1, 표현 식 2,.., 표현 식 n)
내 장 된 산술 함수
int(x)
returns nearest integer to x, located between x and zero and truncated toward zero.
sqrt(x)
returns the positive square root of x. gawk reports an error if x is negative.
exp(x)
returns the exponential of x (e ^ x) or reports an error if x is out of range.
log(x)
returns the natural logarithm of x, if x is positive; otherwise, it reports an error.
sin(x)
returns the sine of x, with x in radians.
cos(x)
returns the cosine of x, with x in radians.
atan2(y, x)
returns the arctangent of y/x in radians.
rand()
returns a random number , uniformly distributed between zero and one ( 0<=value<1 ) srand x)
function srand sets the seed, for generating random numbers to the value x
시간 함수
systime 함 수 는 1970 년 1 월 1 일부 터 현재 시간 (윤년 을 따 지지 않 음) 까지 의 정 초 수 를 되 돌려 줍 니 다.
형식: systime ()
strftime 함 수 는 C 라 이브 러 리 의 strftime 함 수 를 사용 하여 시간 을 포맷 합 니 다.
날짜 와 시간 형식 설명자
형식 설명
% a 요일 의 줄 임 말 (Sun)
% A 요일 의 전체 쓰기 (Sunday)
% b 월 이름 의 줄 임 말 (Oct)
% B 월 이름 의 전체 쓰기 (October)
% c 로 컬 날짜 와 시간
% d 십진수 날짜
% D 날짜 08/20/99
% e 날짜, 한 명 만 있 으 면 빈 칸 을 채 웁 니 다.
% H 24 시간 형식의 시간 을 10 진법 으로 표시 합 니 다.
% I 12 시간 형식 을 10 진법 으로 표시 하 는 시간
% j 1 월 1 일부 터 1 년 중 며칠 째
% m 10 진법 으로 표시 되 는 달
% M 10 진법 으로 표시 되 는 분
% p 12 시간 표기 법 (AM/PM)
% S 10 진법 표시 초
% U 10 진법 은 1 년 중 몇 번 째 주 (일요일 은 일주일 의 시작) 를 표시 합 니 다.
% w 10 진법 이 표시 하 는 요일 (일요일 은 0)
% W 10 진법 은 1 년 중 몇 번 째 주 (월요일 은 일주일 의 시작) 를 표시 합 니 다.
% x 로 컬 날짜 다시 설정 (08/20/99)
% X 로 컬 시간 재 설정 (12: 00: 00)
% y 두 숫자 가 나타 내 는 해 (99)
% Y 현재 월
% Z 시간 대 (PDT)
%% 퍼센트 (%)
형식: strftime ([format specification] [, timestamp])
24. 사용자 정의 함수
스 크 립 트 에서 패턴 조작 규칙 이 나타 날 수 있 는 위 치 는 사용자 정의 함 수 를 배치 할 수 있 습 니 다.
형식: 함수 명 (매개 변수, 매개 변수, 매개 변수,...) {
문장
return 표현 식
(주: return 구문 과 표현 식 은 모두 옵션 입 니 다)
}
변 수 는 매개 변수 값 으로 전달 되 며 함수 에서 만 부분 적 으로 유효 합 니 다.함수 가 사용 하 는 것 은 변수의 사본 일 뿐 입 니 다.배열 은 주소 나 인용 을 통 해 전달 되 기 때문에 함수 에서 배열 의 요 소 를 직접 수정 할 수 있 습 니 다.함수 의 변 수 는 매개 변수 목록 에서 들 려 오지 않 으 면 전역 변수 로 간주 합 니 다.함 수 를 호출 할 때 특정한 인삼 의 값 을 지정 하지 않 으 면 이 매개 변 수 는 비어 있 습 니 다.
예 23:
long@long-Ubuntu:~$ cat grades
44 55 66 22 77 99
100 22 77 99 33 66
55 66 100 99 88 45
long@long-Ubuntu:~$ cat sorter.sc
#Scriptname: sorter
#It sorts numbers in ascending order
function sort(scores, num_elements, temp, i, j){
#temp,i,j will be local and private
#with an initial value of null
for(i=2; i<=num_elements;++i){
for(j=i; scores[j-1]>scores[j]; --j){
temp = scores[j]
scores[j] = scores[j-1]
scores[j-1] = temp
}
}
}
{for (i=1; i<=NF; i++)
grades[i] = $i
sort(grades,NF)
for(j=1;jprintf("%d ", grades[j])
printf("/n")
}
long@long-Ubuntu:~$ awk -f sorter.sc grades
22 44 55 66 77
22 33 66 77 99
45 55 66 88 99
25. 잡다 한 항목
고정 필드
일부 데 이 터 는 뚜렷 한 필드 구분자 가 없 지만 고정된 너비 의 열 이 있다.이 데 이 터 를 미리 처리 할 때 substr 가 유용 합 니 다.
빈 필드
고정 길이 의 필드 로 데 이 터 를 저장 하면 빈 필드 가 생 길 수 있 습 니 다. substr 는 데 이 터 를 포함 하 는 지 여 부 를 고려 하지 않 고 필드 를 저장 할 수 있 습 니 다.
26. awk 명령 옵션
-F fs or --field-separator fs
입력 파일 의 구분 자 를 지정 합 니 다. fs 는 문자열 이나 정규 표현 식 입 니 다. 예 를 들 어 - F:.
-v var=value or --asign var=value
사용자 정의 변 수 를 할당 합 니 다.
-f scripfile or --file scriptfile
스 크 립 트 파일 에서 awk 명령 을 읽 습 니 다.
-mf nnn and -mr nnn
Nn 값 에 내 적 제한 을 설정 하고 - mf 옵션 은 Nn 에 분 배 된 최대 블록 수 를 제한 합 니 다. -mr 옵션 은 기록 의 최대 수 를 제한 합 니 다.이 두 가지 기능 은 Bell 실험실 판 awk 의 확장 기능 으로 표준 awk 에 서 는 적용 되 지 않 습 니 다.
-W compact or --compat, -W traditional or --traditional
호 환 모드 에서 awk 를 실행 합 니 다.그래서 gawk 의 행동 은 표준 awk 와 마찬가지 로 모든 awk 확장 이 무시 되 었 습 니 다.
-W copyleft or --copyleft, -W copyright or --copyright
간단 한 저작권 정 보 를 인쇄 하 다.
-W help or --help, -W usage or --usage
모든 awk 옵션 과 옵션 에 대한 간단 한 설명 을 인쇄 합 니 다.
-W lint or --lint
전통 적 인 유 닉 스 플랫폼 에 이식 할 수 없 는 구조 에 대한 경 고 를 인쇄 합 니 다.
-W lint-old or --lint-old
전통 적 인 유 닉 스 플랫폼 에 이식 할 수 없 는 구조 에 대한 경 고 를 인쇄 합 니 다.
-W posix
호 환 모드 를 엽 니 다.그러나 다음 과 같은 제한 이 있 습 니 다. 식별 되 지 않 습 니 다./x, 함수 키워드, func, 코드 교환 시퀀스 와 fs 가 빈 칸 일 때 새 줄 을 도 메 인 구분자 로 합 니 다.연산 자 * * 와 * = 대체 할 수 없습니다 ^ 와 ^ =;fflush 무효.
-W re-interval or --re-inerval
괄호 표현 식 [[: alpha:] 과 같은 정규 표현 식 의 사용 을 허용 합 니 다.
-W source program-text or --source program-text
program - text 를 소스 코드 로 사용 하여 - f 명령 과 혼용 할 수 있 습 니 다.
-W version or --version
버그 보고 정 보 를 인쇄 하 는 버 전 입 니 다.

좋은 웹페이지 즐겨찾기