Linux 강력 한 텍스트 분석 도구 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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[fish] awk의 스크립트 부분을 히스토리에서 보완awk 의 사용법이 우울한 기억으로, 그렇다면 어떻게 할까? 다시 검색하는 것이 많았기 때문에 어떻게든하고 싶다. peco 그리고 과거의 awk 이력을 찾는 것도 있지만, fish 그래서 보완으로 해결할 수 있으면 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.