awk 도구

2743 단어 awk공구.Shell
awk工具

형식 1: 사전 명령 | awk [옵션] '[조건] {편집 명령}' 형식 2: awk [옵션] '[조건] {편집 명령}' 파일 이름
그 중에서 print 는 가장 자주 사용 하 는 편집 명령 으로 여러 개의 편집 명령 이 있 으 면 분점 으로 구분 할 수 있다.텍스트 를 처리 할 때 명령 구분자 가 없 으 면 기본적으로 공백, 탭 문자 등 을 구분자 로 합 니 다.
상용 옵션: - F: 구분자 지정, 생략 가능 (기본 스페이스 바 또는 Tab 비트) - V: 외부 셸 변 수 를 호출
예: awk - F: '{print $1', '$7}'/etc/passwd 출력/etc/passwd 파일 에서 1, 7 열 을 콜론 으로 구분 하여 서로 다른 열 사 이 를 쉼표 로 구분 합 니 다.
awk - F [:/] '{print $6 $8}'/etc/passwd 는 ':' 또는 '/' 로 텍스트 내용 을 구분 하여 6 열 과 8 열 을 인쇄 합 니 다.
awk 필터 의 시기 BEGIN {편집 명령} 첫 줄 을 읽 기 전에 실행 합 니 다.
{편집 명령} 읽 을 때마다 한 줄 씩 처리 합 니 다.
END {명령 편집} 행 후 처리 마지막 줄 을 읽 은 후에 실행 합 니 다.
awk [옵션] 'BEGIN {편집 명령} {편집 명령} END {편집 명령}' 파일
awk [옵션] '[옵션]/정규 일치/{편집 명령}' 파일
예: awk - F: '/^ [a - d]/{print $2, $4}'/etc/passwd 출력 a - d 로 시작 하 는 2 열 과 4 열
awk '/^ a | h $/{print}' a. txt 출력 은 a 로 시작 하거나 h 로 끝 나 는 줄 입 니 다.
awk '$6 ~/bin $/{print}' a. txt 출력 은 6 열 로 일치 합 니 다. bin 으로 끝 납 니 다.
awk '$3!~/nologin $/{print} 'a. txt 출력 은 3 열 로 일치 합 니 다. nologin 으로 끝나 지 않 습 니 다.
awk 내장 변수 FS: 필드 구분자 저장 또는 설정 $n: 구 분 된 n 번 째 필드 를 지정 합 니 다 $0: 현재 읽 은 전체 텍스트 내용 NF: 현재 처리 줄 의 필드 개수 (열 수) NR 기록: 현재 읽 은 줄 의 수 (줄 수) 기록
수치 비교같 지 않다
크다
논리 비교 테스트 & &: 논리 와 |: 논리 또는
연산 자 +, -,/,% +, --, + =, - =, =,/=
예: awk 'NR = = 3 {print}' a. txt 출력 세 번 째 줄
awk 'NR% = = 1 {print}' a. txt 출력 홀수 줄
awk 'NR < = 3 {print}' a. txt 출력 전 3 줄
awk 'NR > = 3 {print}' a. txt 출력 세 번 째 줄 에서 끝까지
awk '$1 = =' sy '{print}' a. txt 출력 1 열 은 sy 입 니 다.
awk - F: '$1 = = ENVIRON ["USER"] {print $1, $6, $7}'/etc/passwd 는 현재 사용자 의 사용자 이름, 홈 디 렉 터 리, 로그 인 셸 정 보 를 출력 합 니 다.
awk 'NR > = 3 & & NR < = 5 {print}' a. txt 출력 3 - 5 줄
awk 'NR = = 3 | NR = = 5 {print}' a. txt 출력 세 번 째 줄 과 다섯 번 째 줄
awk '$7!~/nologin $/| $1 ~/^ [a - d]/{print} 'a. txt 매 칭 7 열 출력 은 nologin 으로 끝나 지 않 거나 1 열 매 칭 a - d 로 시작 합 니 다.
awk 'BEGIN {X = 0} {x++} END {print' 값 'x}' a. txt 한 줄 을 읽 을 때마다 x 를 추가 하고 마지막 으로 x 의 값 을 인쇄 합 니 다.
awk 'NR% 7 = = 0 |/NR ~/7/{print}' a. txt 출력 100 이내 7 의 배수 또는 7 의 수 를 포함 합 니 다.
awk 프로 세 스 제어 단일 분기: if (조건) {편집 명령} 두 가지: if (조건) {편집 명령} else {편집 명령} 여러 가지: if (조건) {편집 명령} else if (조건) {편집 명령} else {편집 명령} else {편집 명령}
예: awk - F: 'BEGIN {i = 0; j = 0} {if ($3 < = 500) {i++} else {j++} END {print i, j}'/etc/passwd 통계 UID 는 500 보다 작 거나 같 으 며 UID 가 500 보다 큰 사용 자 는 각각 얼마 입 니까?
while 순환 while (조건) {편집 명령} 예: awk - F [:/] 'BEGIN {i = 1} {while (i < = NF) {if ($i ~/root/) {j++}; i++} END {print j}'/etc/passwd 통계 'root' 의 횟수
awk 배열 정의 배열 형식: 배열 이름 [아래 표] = 값 호출 배열 형식: 배열 이름 [아래 표] 배열 형식 옮 겨 다 니 기: for (변수 in 배열 이름) {print 배열 이름 [변수]}
예: awk '{ip [$1]++} END {for (i in ip) {printi, ip [i]}' a. txt 는 각 IP 주소 가 서버 에 접근 하 는 횟수 를 집계 합 니 다.

좋은 웹페이지 즐겨찾기