1.使用正則處理條件
-輸出以bash結尾的完整記錄(輸出整行)
#awk -f: '/bash$/' /etc/passwd
-輸出包含root的行
#awk -f: '/root/' /etc/passwd (print可以不寫)
-輸出root或者he賬號的使用者名稱和uid資訊
#awk -f: '/^(root|tom)/'
-輸出賬戶的名稱包含root的行,(第一列包含oo)
#awk -f: '$1~/oo/' /etc/passwd
-輸出登入shell不以nolocal結尾的使用者名稱和登入shell資訊
#awk -f: '$7!~/nolocal/'
!~ : 取反匹配
2.使用數值/字串比較條件
比較符號:
== 等於 != 不等於
< > >= <=
-輸出賬戶uid大於等於1000的賬戶名和uid資訊
#awk -f: '$3>=1000' /etc/passwd
-輸出第三行
#awk -f: 'nr==3' /etc/passwd
-輸出uid小於10的賬戶名和uid資訊
#awk -f: '$3<10' /etc/passwd
-輸出使用者名稱root的行
#awk -f: '$1=="root"' /etc/passwd
-輸出uid大於10且小於20的賬戶資訊
#awk -f: '$3>10 && $3<20' /etc/passwd
-輸出uid大於1000或者小於10 的賬戶資訊
#awk -f: '$3>1000 || $3<10' /etc/passwd
數**算:
#awk 'begin'
1#awk 'begin'
10#awk 'begin'
7#awk 'begin'
5#awk 'begin'
6#awk 'begin'
7-統計200以內3的倍數的數量
#seq 200 | awk '$1%3==0 end'
for i in `seq 200`
do[ $[ i % 3 ] -eq 0 ] && j++
done
echo $j
awk過濾if分支結構:
1.單分之
-統計uid小於或等於1000的使用者數量
#awk -f: ' end'
-統計登入shell是/bin/bash的使用者
#awk -f: '} end' /etc/passwd
2.雙分之
-分別統計uid小於或等於1000、uid大於1000的使用者個數
#awk -f: 'else} end' /etc/passwd
-統計登入shell是/bin/bash的使用者和登入shell不是/bin/bash的使用者的個數
#awk -f: 'else} end{}print i,j' /etc/passwd
awk 陣列:
陣列是乙個可以儲存多個值的變數
定義陣列:
陣列名[下標]=元素值
呼叫:陣列名[下標]
a=[1,2,「abc」]
a[2]=abc //下標從0開始
遍歷陣列的用法: for (變數 in 陣列名)
-定義乙個陣列並呼叫
#awk 'begin'
88 11
#awk 'begin'
1#awk 'begin'
1#awk 'begin'
1 遍歷陣列並輸出下標和對應的值
#awk 'begin}'
0 00
1 11
2 22
-下標還可以為字串,字串記得加雙引號
#awk 'begin'
0
awk例項:
1.分析web日誌中訪問量的排名,要求輸出客戶端 訪問次數 按照訪問次數從小到大輸出
shell指令碼11彈
shell指令碼程式設計 變數補充 if條件判斷 變數的型別 字串 數值 布林型別 true false null shell中指定變數的型別 declare declesar 內建命令 用來宣告和修改變數的屬性 唯讀 readonly r 設定為唯讀變數 declare r a 10 r 不能修改...
shell 指令碼第五彈
1.shell指令碼程式設計 1.指令碼是 c語言 程式設計 shell 指令碼 只作用於linux作業系統 以間隔多行命令 2.功能 批量處理檔案 自動去做某些功能 date,who,ls 處理日誌資訊 備份 刪除原日誌 上傳備份檔案 週期性計畫任務 3.學習方法 linux的命令 lamp we...
shell指令碼第六彈
shell中的函式 變數 條件 迴圈 函式 陣列 awk function 函式 語法格式 函式名 function name function name 向函式中傳遞引數 位置變數 0 表示當前指令碼的檔名 表示多少個引數 表示所有的位置引數 1 表示第乙個引數 2 表示第二個引數 定義乙個函式例...