一、awk if分支結(jié)構(gòu)
奎文網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),奎文網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為奎文近千家提供企業(yè)網(wǎng)站建設(shè)服務。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務好的奎文做網(wǎng)站的公司定做!
二、awk數(shù)組 for循環(huán)
一、awk if分支結(jié)構(gòu)
案例1
awk過濾中的if分支結(jié)構(gòu)
1)單分支
統(tǒng)計/etc/passwd文件中UID小于或等于1000的用戶個數(shù):
統(tǒng)計/etc/passwd文件中UID大于1000的用戶個數(shù):
統(tǒng)計/etc/passwd文件中登錄Shell是“/bin/bash”的用戶個數(shù):
2)雙分支
分別統(tǒng)計/etc/passwd文件中UID小于或等于1000、UID大于1000的用戶個數(shù):
分別統(tǒng)計/etc/passwd文件中登錄Shell是“/bin/bash”、 登錄Shell不是“/bin/bash”的用戶個數(shù):
二、awk數(shù)組
注意,awk數(shù)組的下標除了可以使用數(shù)字,也可以使用字符串,字符串需要使用雙引號:
案例3:awk擴展應用
1)awk統(tǒng)計Web訪問排名
在分析Web日志文件時,每條訪問記錄的第一列就是客戶機的IP地址,其中會有很多重復的IP地址。因此只用awk提取出這一列是不夠的,還需要統(tǒng)計重復記錄的數(shù)量并且進行排序。
通過awk提取信息時,利用IP地址作為數(shù)組下標,每遇到一個重復值就將此數(shù)組元素遞增1,最終就獲得了這個IP地址出現(xiàn)的次數(shù)。
針對文本排序輸出可以采用sort命令,相關(guān)的常見選項為-r、-n、-k。其中-n表示按數(shù)字順序升序排列,而-r表示反序,-k可以指定按第幾個字段來排序
實現(xiàn)此案例需要按照如下步驟進行。
步驟一:統(tǒng)計Web訪問量排名
分步測試、驗證效果如下所述。
1)提取IP地址及訪問量
2)對第1)步的結(jié)果根據(jù)訪問量排名
案例4:編寫監(jiān)控腳本
本案例要求編寫腳本,實現(xiàn)計算機各個性能數(shù)據(jù)監(jiān)控的功能,具體監(jiān)控項目要求如下:
CPU負載
網(wǎng)卡流量
內(nèi)存剩余容量
磁盤剩余容量
計算機賬戶數(shù)量
當前登錄賬戶數(shù)量
計算機當前開啟的進程數(shù)量
本機已安裝的軟件包數(shù)量
步驟
實現(xiàn)此案例需要按照如下步驟進行。
步驟一:準備工作
1)查看性能數(shù)據(jù)的命令
步驟二:編寫參考腳本
1)腳本內(nèi)容如下:
字符串判斷
str1 = str2當兩個串有相同內(nèi)容、長度時為真
str1 != str2 當串str1和str2不等時為真
-n str1 當串的長度大于0時為真(串非空)
-z str1 當串的長度為0時為真(空串)
str1 當串str1為非空時為真
2、數(shù)字的判斷
int1 -eq int2兩數(shù)相等為真
int1 -ne int2兩數(shù)不等為真
int1 -gt int2int1大于int2為真
int1 -ge int2int1大于等于int2為真
int1 -lt int2int1小于int2為真
int1 -le int2int1小于等于int2為真
3 文件的判斷
-r file 用戶可讀為真
-w file 用戶可寫為真
-x file 用戶可執(zhí)行為真
-f file 文件為正規(guī)文件為真
-d file 文件為目錄為真
-c file 文件為字符特殊文件為真
-b file 文件為塊特殊文件為真
-s file 文件大小非0時為真
-t file 當文件描述符(默認為1)指定的設(shè)備為終端時為真
3、復雜邏輯判斷
-a 與
-o 或
! 非
EXAMPLE:
[ -a FILE ] 如果 FILE 存在則為真。
[ -b FILE ] 如果 FILE 存在且是一個塊特殊文件則為真。
[ -c FILE ] 如果 FILE 存在且是一個字特殊文件則為真。
[ -d FILE ] 如果 FILE 存在且是一個目錄則為真。
[ -e FILE ] 如果 FILE 存在則為真。
[ -f FILE ] 如果 FILE 存在且是一個普通文件則為真。
[ -g FILE ] 如果 FILE 存在且已經(jīng)設(shè)置了SGID則為真。
[ -h FILE ] 如果 FILE 存在且是一個符號連接則為真。
[ -k FILE ] 如果 FILE 存在且已經(jīng)設(shè)置了粘制位則為真。
[ -p FILE ] 如果 FILE 存在且是一個名字管道(F如果O)則為真。
[ -r FILE ] 如果 FILE 存在且是可讀的則為真。
[ -s FILE ] 如果 FILE 存在且大小不為0則為真。
[ -t FD ] 如果文件描述符 FD 打開且指向一個終端則為真。
[ -u FILE ] 如果 FILE 存在且設(shè)置了SUID (set user ID)則為真。
[ -w FILE ] 如果 FILE 如果 FILE 存在且是可寫的則為真。
[ -x FILE ] 如果 FILE 存在且是可執(zhí)行的則為真。
[ -O FILE ] 如果 FILE 存在且屬有效用戶ID則為真。
[ -G FILE ] 如果 FILE 存在且屬有效用戶組則為真。
[ -L FILE ] 如果 FILE 存在且是一個符號連接則為真。
[ -N FILE ] 如果 FILE 存在 and has been mod如果ied since it was last read則為真。
[ -S FILE ] 如果 FILE 存在且是一個套接字則為真。
[ FILE1 -nt FILE2 ] 如果 FILE1 has bee more recently than FILE2, or 如果 FILE1 exists and FILE2 does not則為真。
[ FILE1 -ot FILE2 ] 如果 FILE1 比 FILE2 要老, 或者 FILE2 存在且 FILE1 不存在則為真。
[ FILE1 -ef FILE2 ] 如果 FILE1 和 FILE2 指向相同的設(shè)備和節(jié)點號則為真。
[ -o OPTIONNAME ] 如果 shell選項 “OPTIONNAME” 開啟則為真。
[ -z STRING ] “STRING” 的長度為零則為真。
[ -n STRING ] or [ STRING ] “STRING” 的長度為非零 non-zero則為真。
[ STRING1 == STRING2 ] 如果2個字符串相同。 “=” may be used instead of “==” for strict POSIX compliance則為真。
[ STRING1 != STRING2 ] 如果字符串不相等則為真。
mkdir命令功能:
mkdir是(make directories)的縮寫,
其功能為創(chuàng)建一個目錄
mkdir命令的語法格式:
mkdir [參數(shù)] [目錄路徑]
------參數(shù)說明---
-p:遞歸創(chuàng)建多級目錄
-m:建立目錄的同時設(shè)置目錄的權(quán)限
-z:設(shè)置安全上下文
-v:顯示目錄的創(chuàng)建過程
注意事項:
1.當待創(chuàng)建目錄已存在,則會提示相應的存在信息,并不會執(zhí)行創(chuàng)建目錄動作
2.mkdir命令可以同時創(chuàng)建多個目錄
例:
mkdir命令 的示例分享
----在當前目錄下,創(chuàng)建一個子目錄dirTest
[root@****** ~]# mkdir dirTest
----在目錄/usr/test下建立子目錄dirtest
---并設(shè)置目錄所有者擁有有讀、寫和執(zhí)行權(quán)限,其他人無權(quán)訪問
[root@****** ~]# mkdir -m 700 /usr/test/dirtest
---同時創(chuàng)建子目錄dirtest1,dirtest2,dirtest3
[root@****** ~]# mkdir dirtest1 dirtest2 dirtest3
---遞歸創(chuàng)建目錄
---此命令會先創(chuàng)建一個test目錄
---再創(chuàng)建一個dirtest目錄
[root@****** ~]# mkdir -p test/dirtest