awk編程if
『壹』 Linux awk 命令詳解(二) if 分支 數組
一、awk if分支結構
二、awk數組 for循環
一、awk if分支結構
案例1
awk過濾中的if分支結構
1)單分支
統計/etc/passwd文件中UID小於或等於1000的用戶個數:
統計/etc/passwd文件中UID大於1000的用戶個數:
統計/etc/passwd文件中登錄Shell是「/bin/bash」的用戶個數:
2)雙分支
分別統計/etc/passwd文件中UID小於或等於1000、UID大於1000的用戶個數:
分別統計/etc/passwd文件中登錄Shell是「/bin/bash」、 登錄Shell不是「/bin/bash」的用戶個數:
二、awk數組
注意,awk數組的下標除了可以使用數字,也可以使用字元串,字元串需要使用雙引號:
案例3:awk擴展應用
1)awk統計Web訪問排名
在分析Web日誌文件時,每條訪問記錄的第一列就是客戶機的IP地址,其中會有很多重復的IP地址。因此只用awk提取出這一列是不夠的,還需要統計重復記錄的數量並且進行排序。
通過awk提取信息時,利用IP地址作為數組下標,每遇到一個重復值就將此數組元素遞增1,最終就獲得了這個IP地址出現的次數。
針對文本排序輸出可以採用sort命令,相關的常見選項為-r、-n、-k。其中-n表示按數字順序升序排列,而-r表示反序,-k可以指定按第幾個欄位來排序
實現此案例需要按照如下步驟進行。
步驟一:統計Web訪問量排名
分步測試、驗證效果如下所述。
1)提取IP地址及訪問量
2)對第1)步的結果根據訪問量排名
案例4:編寫監控腳本
本案例要求編寫腳本,實現計算機各個性能數據監控的功能,具體監控項目要求如下:
CPU負載
網卡流量
內存剩餘容量
磁碟剩餘容量
計算機賬戶數量
當前登錄賬戶數量
計算機當前開啟的進程數量
本機已安裝的軟體包數量
步驟
實現此案例需要按照如下步驟進行。
步驟一:准備工作
1)查看性能數據的命令
步驟二:編寫參考腳本
1)腳本內容如下:
『貳』 shell中awk中if判斷
你直接運行grep '2018-06' gprs_c* | grep $num |more 看下是不是有輸出?
如果提示
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.
就是num沒有賦值
然後看下awk那裡,我這里舉了個例子,可以試試下裡面例子中的引號
$catgprs_c
2018-06-02;447956815999;2018-06-0200:00:00
2018-06-03;447956815999;2018-06-0300:00:00
2018-06-04;447956815999;2018-06-0400:00:00
$grep'2018-06'gprs_c*|grep'447956815999'|awk-F";"'{if($3<"2018-06-0300:00:00")print$1}'
2018-06-02
$date1="2018-06-0300:00:00"
$grep'2018-06'gprs_c*|grep'447956815999'|awk-F";"'{if($3<"'"$date1"'")print$1}'
2018-06-02
『叄』 Shell awk命令嵌套if...elif... else寫法
awk '
{
if ($1==1)
print "A"
else if ($1==2)
print "B"
else
print "C"
}'
#命名為1.sh
執行方法:echo "1" | sh 1.sh
寫成一行:
echo "3" | awk '{if ($1==1) print "A"; else if ($1==2) print "B"; else print "C"}'