awk 로 마음의 정리

4041 단어 linuxshellawk
前段时间用AWK处理文本生成报表,用起来非常不错。在这里做个记录。
AWK擅长于文本处理和报表生成,有许多精心设计的特性,允许进行多种方式的编程,一旦学会,将给大家带来新的数据处理体验。

AWK 총 결 1 1, 방식 & 구조 1 2, 행 & 열 매 칭 정규 표현 식 2 2.1 행 매 칭 2 2.2 열 매 칭 2 3, if 판단 순환 (break, contine) 연산 자 2 4, 특수 기호 3 5, 배열 & 내장 함수 3 6, 사용자 정의 함수 와 역할 영역 4 7, 해결 역할 영역 기법 4
1. 방식 & 구조
1. awk 'BEGIN {} {} END {}' $file//명령 행 에 직접 2, [root@node91xie]\# vi test. awk/awk 스 크 립 트 를 파일 에 기록 합 니 다!/bin/awk BEGIN {/(주의) BEGIN 과 {는 같은 줄 FS = ":";} {print $1;} END {/(주의) END 와 {는 같은 줄 에 있어 야 합 니 다} [root@node91xie]\# echo | awk - f test. awk $file//awk 스 크 립 트 처리 로 $file 처리
AWK 코드 구조
BEGIN 블록 초기 화, {} 테마 코드 END 블록 사용 및 최종 출력 및 집계 작업
표시//$ 아래 표시
awk 'BEGIN{FS=“:” ; i=0} {i+=1;print $1} END{ print “—>“,i,“lines” }'/etc/passwd
2. 줄 & 열 일치 정규 표현 식 2.1 줄 일치 awk 'BEGIN {}/root/{print $0} END {}'/etc/passwd 등가 'awk' BEGIN {} $0 ~/root/{print $0} END {} '/etc/passwd root: x: 0: 0: root:/root:/bin/bash operator: x: 11: operator:/root:/sbin/nologin 2.2 열 일치' awk 'BEGIN {FS ='} $1 ~/root/{print $0} END {}'/etc/passwd//정규 표현 식 root: x: 0: 0: root:/root:/bin/bash' awk 'BEGIN {FS =': '} $1 = =' root '{print $0} END {}'/etc/passwd///같은 열 을 선택 하 십시오. x: 0: 0: root:/root:/bin/bash 'awk' BEGIN {FS = ':'} ($1 = 'root') & & & ($2 = 'x') {print $0} END {}'/etc/passwd//여러 판단 root: x: 0: 0: root:/root:/bin/bash 파일 로 쓰기!/bin/awk BEGIN {FS = ":"} ($1 = = "root") & & ($2 = = "x") {/(주의) 여 기 는 같은 줄 에 있어 야 합 니 다. awk 는 JAVA 의 괄호 치기 방식 print $0} END {}
3, if 판단 순환 (break, contine) 연산 자 if awk 'BEGIN {FS = ":"} {if ($0 ~/root/& $1 = = = "root") {print $0}}} {{}}}'/etc/passwdroot: x::::루트:/root://////$$$$$$$$$$$$0} {print $0; i = 0; i < 3; i++++) {print "}} {{{}}} {{{{}}}//etc/passwd/////////줄 마다 빈 줄 을 세 줄 씩 인쇄 합 니 $$$$$$${{}}}} {print$0; (i = 0; i < 3; i < 3; i +} {print $0; i = 0; do {print"; i++} while(i < 3)} END {} '/etc/passwd while awk' BEGIN {} {print $0; i = 0; while (i < 3) {print '; i +} END {}'/etc/passwd 연산 자 awk 'BEGIN {i =' 0 '} {i +; print i} END {}'/etc/passwd///awk 수학 연산 을 할 때 숫자 로 바 꿀 수 있 는 문자열 을 0 으로 바 꿀 수 없습니다.
4. 특수 기호 FS 필드 구분자 awk 'BEGIN {i =' t '; FS =': '} {i++; print NF} END {}'/etc/passwd NF 필드 수 awk 'BEGIN {i =' t '; FS =': '} {i++; print NF} END {}'/etc/passwd NR 몇 번 째 줄 awk 'BEGIN {i =' t '; FS =': '} {i +; print NR} END {}'/etc/passwd RS 기록 구분자 변 수 는 기본적으로 cat/etc/passwd | xargs cat/etc/passwd | xargs | awk' BEGIN {RS = "nologin"} {print "-"$0} {} "OFS 출력 쉼표 대체 echo"| awk 'BEGIN {OFS = "- YES -"} {print "1", "2"} END {} "ORS, 모두"출력 기록 구분자 "echo"| awk' BEGIN {ORS = "; OFS =";“—YES—“} {print “1”,“2”;print “3”,4} END{}'
5, 배열 & 내장 함수 배열!/bin/awk BEGIN {months ["Jan"] = "01"; months ["Feb"] = "02"; months ["Mar"] = "03"; months ["Apr"] = "04"; monts ["May"] = "05"; months [준 "] ="06 "; months ["Ju"]] ="06 "; months ["Ju"] ="07 "; monts ["Aug "] ="08 "; monts ["Sep "] ="09 "; monts ["Oct"Oct"]] = "10"; 10 "10"; 10 "; monts ["10 "; monts [""10""; monts ["""""""9 "Sep"]]]]] months ["Nov"] = "11";months[“Dec”]=“12”; } { for(i in months){ print i,” —>“,months[i]; }
내장 함수 awk 'BEGIN {FS =': "} {print"length -> ", length ($0); print"index -> ", index ($0,"root "); print toupper ($0)} END {} '/etc/passwd
6. 사용자 정의 함수 와 역할 영역 사용자 정의 함수 echo | awk 'BEGIN {} function test () {for (i = 0; i < 5; i +) {print "--", i}} {i = 0; for (i = 0; i++) {print "^ ^ ^", i; test ()} END {}'
echo | awk 'BEGIN{} function test(){ for(j=0;j<5;j++){print “——“,j}}{ i=0;for(i=0;i<3;i++){print “^^^^“,i ; test()} } END{}'
7. 해결 역할 영역 기술
함수 매개 변 수 를 이용 하여 echo | awk 'BEGIN {} function test (i) {for (i = 0; i < 5; i++) {print "--", i}} {i = 0; for (i = 0; i++) {print "^ ^ ^", i; test ()} END {}'
x, y 가 입력 인자 라면? echo | awk 'BEGIN {} function test (x, y, i) {for (i = 0; i < 5; i++) {print "--", i} {i = 0; for (i = 0; i < 3; i++) {print "^ ^", i; test ()} END {}'
기교, 표지 칸 막 이 echo | awk 'BEGIN {} function test (x, y, END, i) {for (i = 0; i < 5; i++) {print "---", i} {i = 0; for (i = 0; i < 3; i++) {print "^ ^", i; test ()}} END {}' 여러 AWK 파일?

좋은 웹페이지 즐겨찾기