linux awk命令詳解二-----控制語句

                 linux awk命令詳解二-----控制語句


一.if-else

語法:if (condition條件表達式) {then-body} else {else-body }

示例:

  1. 判斷/etc/passwd中管理員和普通用戶

    awk -F:  '{if($1=="root") print $1,"admin";else  print $1,"commom user"}'  /etc/passwd

    awk -F:  '{if($1=="root") printf "%-15s:%s\n",$1,"admin";else printf      "%-15s:%s\n",$1,"commom user"}'  /etc/passwd

3.統計/etc/passwd中UID號大於500的用戶的個數

    awk -F:  -v  sum=0 '{if($3>=500) sum++;}END{print sum}'  /etc/passwd


二.while

語法:while(condition){statement1;statment2; ...}

示例:

1.打印/etc/passwd前三個字段

awk -F: '{i=1;while(i<=3){print $i;i++}}'  /etc/passwd

三.do-while

語法: do {statement1, statement2, ...} while (condition)

示例:

1.打印/etc/passwd前三個字段

awk -F: '{i=1;do{print $i;i++}while(i<=3)}' /etc/passwd


四.for

語法:for(variable assignment; condition; iteration process) { statement1, statement2, ...}

示例:

1.打印/etc/passwd前三個字段

awk -F: '{for(1=1;1<=3;i++) print $i;}'  /etc/passwd


五.case

語法:switch (expression) { case VALUE or /REGEXP/: statement1, statement2,... default: statement1, ...}


六.break 和 continue常用於循環或case語句中


七.next提前結束對本行文本的處理,並接着處理下一行


八.AWK中使用數組

array[index-expression]

index-expression可以使用任意字符串;需要注意的是,如果某數據組元素事先不存在,那麼在引用其時,awk會自動創建此元素並初始化爲空串;因此,要判斷某數據組中是否存在某元素,需要使用index in array的方式。

九.遍歷數組

for (var in array) { statement1, ... }   其中,var用於引用數組下標,而不是元素值

示例:

  1. 統計netstat -n命令當前處於各種狀態的數量

    netstat -an |awk '/^tcp/{++s[$NF]}END{for(a in s) printf "%10s:%s\n",a,s[a]}'

  2. 統計/etc/passwd文件中shell類型不爲空,並且每個shell的個數

    awk -F: '$NF!~/^$/{shell[$NF]++}END{for(a in shell) print a,shell[a]}' /etc/passwd

  3. 統計apache訪問日誌中每個IP的訪問次數

    awk '{ip[$1]++}END{for(a in ip) print a,ip[a]}'  /usr/local/apache/logs/access_logs

先說這麼多,以後還會慢慢更新,謝謝支持。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章