Linux 강력 한 텍스트 분석 도구 awk 상세 설명

4074 단어 awklinuxtools
1. awk 안내
awk 는 강력 한 텍스트 분석 도구 이 며, Linux 의 다음 문자열 처리 언어 라 고 할 수 있 습 니 다. 데 이 터 는 표준 입력 (stdin), 한 파일 또는 여러 파일 또는 다른 명령 의 출력 에서 나 올 수 있 습 니 다.명령 으로 사용 할 수 있 지만 스 크 립 트 로 사용 할 수 있 습 니 다.
정규 표현 식, 사용자 정의 변수 (클래스 map 형 배열, 색인 만 문자열 일 수 있 음), 내장 변수, 내장 함수, 프로 세 스 제어 문 구 를 지원 합 니 다.
파일 의 줄 마다 내용 을 차례대로 읽 고 처리 합 니 다.빈 칸 문자 와 탭 문 자 는 기본 적 인 분할 문자 로 분할 기 호 를 사용 하여 각 줄 을 자 른 다음 에 절개 부분 을 단독으로 처리 합 니 다.
2. awk 매개 변수
사용자 정의 구분자 지원
정규 표현 식 일치 지원 (표준 정규)
사용자 정의 변 수 를 지원 합 니 다. 배열 a [1] a [tom] map (key)
내장 변수 지원
                   ARGC                      

                   ARGV                      

                   ENVIRON                          

                   FILENAME           awk      

                   FNR                        

                   FS                         ,       -F  

                   NF                                 

                   NR                             

                   OFS                      

                   ORS                       

                   RS                        

제어 기록 구분자 지원 함수 print, split, substr, sub, gsub
프로 세 스 제어 문 구 를 지원 합 니 다. 클래스 C 언어 if, while, do / while, for, break, contine
\ \ $0 은 전체 기록 을 대표 합 니 다. \ \ $1 은 첫 번 째 필드 를 표시 하고 $2 는 두 번 째 필드 를 표시 하 며 한 번 에 유추 합 니 다...
3. 예시
텍스트 데이터
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
mysqladmin:x:514:101::/usr/local/mysql:/bin/bash

수요
누 르 기: a. txt 파일 을 자 르 고 첫 번 째 열 을 인쇄 합 니 다.
awk -F':' '{print $1}' a.txt

누 르 기: a. txt 파일 을 자 르 고 첫 번 째 열 과 일곱 번 째 열 을 인쇄 하 며 tab 키 로 구분 합 니 다.
awk -F':' '{print $1 "\t" $7}' a.txt

누 르 기: a. txt 파일 을 자 르 고 첫 번 째 열 과 일곱 번 째 열 을 인쇄 합 니 다. 표 머리 는 name 과 셸 을 추가 하고 표 끝 은 over 를 추가 합 니 다. 필드 간 tab 키 로 구 분 됩 니 다.
awk -F':' 'BEGIN{print "name\tshell"} {print $1 "\t" $7} END{print "over"}' a.txt

루트 단 어 를 포함 하 는 줄 인쇄
awk '/root/ {print $0} ' a.txt

루트 단 어 를 포함 하 는 줄 을 인쇄 한 후 모든 줄 을 인쇄 합 니 다 (검색 값 은 첫 번 째 함수 에 적 용 됩 니 다)
awk '/root/ {print $0}  {print $0} ' a.txt

각 줄 의 정 보 를 인쇄 하고, 맨 앞 에 줄 번호 와 이 줄 의 총 열 수 를 추가 하 며, tab 키 로 구분 합 니 다.
awk -F':' '{print NR "\t" NF "\t" $0}' a.txt

보고서 통계 데이터
#     :    1   ,0:manager,1:worker
Tom      0   2012-12-11      car     3000
John     1   2013-01-13      bike    1000
vivi     1   2013-01-18      car     2800
Tom      0   2013-01-20      car     2500
John     1   2013-01-28      bike    3500

수요
통계 01 월 직원 임금
awk '{split($3,date,"-");if(date[2]=="01"){name[$1]+=$5}} END{for(i in name){print i "\t" name[i]}}' a.txt

01 월 근로자 임금 을 집계 하면, 근로자 유형 은 0, 말미 M, 말미 1 로 W 를 추가한다
awk '{split($3,date,"-");if(date[2]=="01"){name[$1]+=$5};if($2=="0"){role[$1]="M"}else{role[$1]="W"}} END{for(i in name){print i "\t" name[i] "\t" role[i]}}' a.txt

좋은 웹페이지 즐겨찾기