bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

7、awk編程語言-創新互聯

awk 獨立的編程語言 (變量 內置變量 流程控制 函數 數組)

目前成都創新互聯公司已為成百上千的企業提供了網站建設、域名、雅安服務器托管、網站托管維護、企業網站設計、九臺網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發展。

在寫腳本時使用awk獲取數據給程序處理

awk獨立使用時,主要用來對數據做統計

命令格式

awk [選項] '處理動作' 文件列表 (多個文件之間用空格間隔)

命令 | awk [選項] '處理動作'

awk處理數據方式:

以行為處理單位;對數據進行逐行處理

處理完當前行 把當前行的處理結果輸出后自動對一行進行處理

直到處理完文件中所有行為止

默認是逐行讀入數據,逐行處理數據。要想讓awk只處理指定的行。加條件

只有當前行與條件匹配才執行處理動作,反之則不處理

awk [選項]  '條件{處理動作}' 文件列表

條件的表示方式:

1/正則表達式/

2數值比較

3字符比較

4邏輯比較

選項

-F 指定分割域時的分割符號。默認分割符號是空格和tab健

awk 內置變量

$0 保存awk當前讀放行的內容

FILENAME 保存awk當前處理文件的文件名

NR  保存awk當前處理的行數

FNR 保存awk當前處理的行在文件中的行數

NF 存放用指定分割符號分割后,當前行,列(域)的個數

$1...$n 表示是用指定的分割符 分割數據后的域

$1 變量第1列 $2 第2列

FS 保存字段分割符號 默認值空格和tab健 (FS=

ENVIRON["系統環境"] (數組類型)調用系統環境變量的值

echo $USER $HOSTNAME

awk '{print ENVIRON["HOSTNAME"]},ENVIRON["USER"]}' a.txt

ENVIRON[“系統環境變量”] 讓awk調用系統環境變量

-v 讓awk使用shell自定義變量

#name=jim

#awk -v mz=$name '{print mz}' a.txt

把awk當前系統已有的用戶名輸出屏幕上  /etc/passwd

awk -F":" '{print NR,$1,$6}' /etc/passwd | head -3

用戶名     家目錄

root/root

bin/bin

daemon /sbin

共處理 3 行

awk 'BEGIN{FS=":";print "行號\t用戶名\t家目錄"}{print NR"\t",$1"\t",$6}END{print "共處理了"NR"行"}' /etc/passwd

awk處理數據順序

BEGIN{ }行前處理:  沒讀入行之前執行的動作

   初始化操作都寫在BEGIN{}里

{ }    行處理:   讀入行時執行的動作

   對讀放的行做處理

END{  } 行后處理:  行讀完之后執行的動作

   做總結性輸出操作寫在END{}里

每一個處理都可以單獨使用,也可以重復使用,也可以一起使用

head -8 /etc/passwd | awk 'BEGIN{print NR}{PRINT NR}END{print NR}'

條件的表示方式:

1、/正則表達式/

awk ‘/正則表達式/{處理動作}' 文件名

awk '/root/{print NR,$0}'/etc/passwd

awk '/[0-9]/{print $0}' /etc/passwd

~不匹配

!~不匹配

awk -F":" '$1~/a/{print $1,$3}' /etc/passwd

awk -F":" '$1!~/a/{print $1,$3}' /etc/passwd

2、數值比較 == != > >= < <=

awk -F":" '$3==0{print $1,$3}' /etc/passwd

awk -F":" '$3<10{print $1,$3}' /etc/passwd

3、字符比較 ==  !=

awk -F":" '$1!="bin"{print $0}' /etc/passwd

awk -F":" '$1=="root"{print $0}' /etc/passwd

4、邏輯比較(有多個判斷條件時使用)

&& 邏輯與

|| 邏輯或

! 邏輯非

awk -F":" '$3>=5 && $3<=10{print $1,$3}' /etc/passwd

awk -F":" '$3==5 || $3==7{print $1,$3}' /etc/passwd

awk運算符號(與shell里的運算符方式相同)

+ - * / %

+= -= *= /=

++ --

awk里變量的定義與調用

變量名=值

調用 變量名

* 也可以不定義直接調用

awk -F":" 'NR<=3{i=$1;print i}' /etc/passwd

統計內建用戶和外建用戶的個數

awk -F":" 'BEGIN{i=0;j=0}$3>=500{i++}$3<=499{j++}END{print

"inside user "i" 個";print "outside user "j" 個"}' /etc/passwd

awk 流程控制(流程控制的執行過程和shell里流程控制執行過程一樣,只是語法格式變了)

一、分支結構

單分支

if(條件表達式)執行的操作1

if(條件表達式){條件成立時執行的操作1;執行操作2;執行操作N}

雙分支

if(條件表達式){

動作1;動作2;動作N

else{

動作1;動作2;動作N

awk -F":" '{ if($3<=499){i++}else{j++}}END{print i;print j}' /etc/passwd

多分支

if(條件表達式){

   動作1;動作2;動作N

}

else if(條件表達式){

   動作1;動作2;動作N

......

esle{

   動作1;動作2;動作N

awk -F":" 'BEGIN{x=0;y=0;z=0}{if($3<100){x++}else if

($3>=100&&$3<=499){y++}else if($3>=500){z++}else{print "no user"}}

END{print x,y,z}' /etc/passwd

調用awk腳本對文件處理

awk -f xxx.awk /etc/passwd

vim xxx.awk

#!/usr/bin/awk -f

BEGIN{

FS=":"

x=0

y=0

z=0

}

{

if($3<=499){

  x++

}else{

  y++

}

END{

print "內建用戶個數是 "x" 個"

print "外建用戶個數是 "y" 個"

}

#chmod +x xxx.awk /etc/passwd

./xxx.awk

二、循環結構

for

for(初值;條件表達式:步長){

條件成立時執行的循環體

}

awk "BEGIN{ for(i=1;i<=10;i++){print i}}"

while 先判斷條件再執行循環體

while(條件表達式){

 條件成立時執行循環體

}

awk -F":" '{while( $3<3 ){print $1,$3;}}' /etc/passwd

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

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

do....while 先執行循環體后判斷條件

do{

 循環體

}while(條件表達式)

awk 'BEGIN'{i=10:while(i>20){print i;i++}}'

awk 'BEGIN(i=10;do{print i;i--}while(i>20)}'

awk流程控制語句

對awk里的循環結構做執行控制(只要條件成立就執行循環體)

awk數組

break 結束當前所在的循環體

continue 終止本次循環,開始下一次循環

awk 'BEGIN{for(i=1;i<=10;i++){if(i==4)continue;print i}}'

awk 'BEGIN{for(i=1;i<=10;i++){if(i==4)break;print i}'

對awk做控制(逐行讀入數據,逐行處理數據)

exit

終止awk讀入行

如果有END{}就執行END{}里的動作

如果沒有END{}直接結速處理

awk 'NR==4{exit}{print NR,$0}' a.txt

awk 'NR==4{exit}{print NR,$0}END{print NR}' a.txt

next

讓awk讀取當前行的下一行

awk 'NR==4{next}{print NR,$0}END{print NR}' a.txt

awk數組

定義數組格式:數組名[數字元素下標]=元素值

*數組元素的下標可以使用數字或字符

使用數組元素格式: 數組名[數組元素下標]

輸出數組元素的值:print  數組名[數組元素下標]

awk 'BEGIN'{stuname[0]="jim"stuname[1]="tom";print stuname[0];print stuname[1]}'

awk 'BEGIN{ for{i=0;i<=10;i++}{ num[i]=i;print num[i]} }'

awk 'BEGIN{ for(i=0;i<=10;i++){ num[i]=i;print num[2]} }'

awk 'BEGIN{ for(i=0;i<=10;i++){ num[i]=i };print num[2];print num[3] }'

遍歷數組循環結構

for(變量名 in 數組名){print 數組名[變量名]}

for( x in num ){ print x;print num[x]}

awk 'BEGIN{for(i=0;i<=10;i++)num[i]="user"i};for(w in num){print w,num[w]}'

把系統前5個用戶名存儲到數組usergrp里,然后輸出數組usergrp的所有元素

head -5 /etc/passwd | awk -F":" '{print $3,$1}'

head -5 /eetc/passwd | awk -F":" '{print usergrp[$3]=$1}END{for(i in usergrp}{print i,usergrp[i]}}'

統計test.txt 文件里每個命令出現的次數

awk '{comm[$1]++}END{for(x in comm){print x,comm[x]}}' test1.txt | sort -rnk 2

awk '{comm[$1]++}END{for(x in comm){print x,comm[x]}}' ~/.bash_history | sort -rnk 2 | head -10

r 按降序排序

n 按數字排序

k 按第2列排序

ps -e 顯示系統內的所有進程

  -o 指定顯示那列的數據

   comm 可執行文件名

   cmd | 簡單命令

   pcpu cpu的占用率

   pmem 內存使用率

   time 累計的cpu時間

   etime 進程啟動后度過的時間

例子

ps -eo comm,pupu,pmem --sort -pmem | head  按內存使用率降序排序

ps -eo comm,pcpu,pmem --sort +pmem | head  按內存使用率升序排序

ps -e -o comm,pcpu | tail -n +2

自動連接ssh服務器腳本

#!/usr/bin/expect

set login_host 192.168.1.1

set login_user root

set login_password 123456

spawn ssh $login_user@login_host

expect "login_user@login_host's password:"

send "$login_password\r"

expect "#"

send "useradd jim9\r"

expect "#"

send "exit"

另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

名稱欄目:7、awk編程語言-創新互聯
地址分享:http://vcdvsql.cn/article4/cscgie.html

成都網站建設公司_創新互聯,為您提供網站改版Google營銷型網站建設網站設計公司網站制作軟件開發

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

商城網站建設