一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

awk數(shù)組結(jié)合+=統(tǒng)計題

 土心園 2018-07-25

awk增加統(tǒng)計列值
為增加列數(shù)或進(jìn)行運行結(jié)果統(tǒng)計,使用符號 + =。增加的結(jié)果賦給符號左邊變量值,增加
到變量的域在符號右邊。例如將 $ 1加入變量total,表達(dá)式為toatl+=$1。列值增加很有用。許
多文件都要求統(tǒng)計總數(shù),但輸出其統(tǒng)計結(jié)果十分繁瑣。在awk中這很簡單,請看下面的例子。
將所有學(xué)生的‘目前級別分’加在一起,方法是tot+=$6,tot即為awk瀏覽的整個文件的
域6結(jié)果總和。所有記錄讀完后,在END部分加入一些提示信息及域 6總和。不必在awk中顯
示說明打印所有記錄,每一個操作匹配時,這是缺省動作。
如果文件很大,你只想打印結(jié)果部分而不是所有記錄,在語句的外面加上圓括號()即
可。

 

1
2
3
4
5
6
[root@localhost.localdomain 三 6月 14 10:17:24 home]#cat grade.txt
M.Tansley   05/99 48311 Green 8 40 44
Lulu 06/99 48317    green 8 24 26
P.Bunny 02/99 48 Yellow 12 35 28
J.Troll 07/99 4842  Brown-3 12 26 26
L.Tansley 07/99 4712 Brown-2    12 30 28

  

awk '(tot+=$6);END{print "Club student total points : " tot}' grade.txt

1
2
3
4
5
6
7
[root@localhost.localdomain 三 6月 14 09:48:37 home]#awk '(tot+=$6);END{print "Club student total points : " tot}' grade.txt
M.Tansley 05/99 48311 Green 8 40 44
Lulu 06/99 48317    green 8 24 26
P.Bunny 02/99 48 Yellow 12 35 28
J.Troll 07/99 4842  Brown-3 12 26 26
L.Tansley 07/99 4712 Brown-2    12 30 28
Club student total points : 155

  

實例1:
統(tǒng)計某目錄下文件大小

1
2
3
4
[root@localhost.localdomain 三 6月 14 10:12:50 src]#ls -l
drwxr-xr-x 15 root root 4096 6月 5 16:49 nagios-plugins-2.1.1
-rw-r--r-- 1 root root 2677352 6月 5 16:37 nagios-plugins-2.1.1.tar.gz
-rw-r--r-- 1 root root 405725 6月 5 16:37 nrpe-2.12.tar.gz

  

ls -l | awk '/^[^d]/ {print $9 "\t"$5} {tot+=$5} END{print "total KB:"tot}'

1
2
3
4
5
[root@localhost.localdomain 三 6月 14 10:12:50 src]#ls -l | awk '/^[^d]/ {print $9 "\t"$5} {tot+=$5} END{print "total KB:"tot}'
nagios-plugins-2.1.1.tar.gz 2677352
nrpe-2.12.tar.gz    405725
zabbix-release-3.2-1.el7.noarch.rpm 13392
total KB:3104661

  

 

實例2:

文件如下

1
2
3
4
5
6
7
8
61.144.83.198 594
61.144.83.198 576
61.144.83.198 573
219.137.178.228 570
219.137.178.228 565
61.144.83.198 553
61.144.83.198 550
61.144.83.198 549

  

每一行以空格為分隔符,第一列是ip,第二列為不定數(shù)值

需求,現(xiàn)在想要將相同ip后的不定數(shù)值相加統(tǒng)計出來

1
awk '{a[$1]+=$2}END{for(i in a)print i,a[i]}' file

  

思路:

將ip作為a[]數(shù)組的下標(biāo),將$2中的內(nèi)容賦值給a[$1]即a[ip],得到數(shù)組a[ip]=value

執(zhí)行語句a[ip]+=value,這樣同樣的a[ip]中的值就會與下一行的$2相加,然后得到新的值,繼續(xù)執(zhí)行

直到文件末尾執(zhí)行完畢

 

END模塊

用變量i讀取數(shù)組的下標(biāo),再取出數(shù)值a[i]即value值

最終得到結(jié)果

 

  思考:(有什么不同)

  awk 'a[$1]+=$2;END{for(i in a)print i,a[i]}' file

  但在END前需要添加;表示結(jié)束,不然會發(fā)生語法錯誤

  這個也能得到結(jié)果,執(zhí)行后發(fā)現(xiàn)還是一個基礎(chǔ)的問題pattern跟action的問題

  若沒有{}則表示pattern,action則表示1,即省略,會print $0;

  都是一些細(xì)節(jié)問題

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    亚洲午夜精品视频观看| 日韩欧美三级中文字幕| 亚洲国产中文字幕在线观看 | 久久机热频这里只精品| 精品人妻一区二区三区四在线| 欧美不雅视频午夜福利| 亚洲第一区二区三区女厕偷拍 | 日韩国产欧美中文字幕| 国产色偷丝袜麻豆亚洲| 好吊妞在线免费观看视频| 中文日韩精品视频在线| 深夜福利亚洲高清性感| 91日韩欧美在线视频| 又大又长又粗又黄国产| 国产精品成人一区二区在线| 精品国产亚洲区久久露脸| 五月天婷亚洲天婷综合网| 亚洲精品小视频在线观看| 国产精品刮毛视频不卡| 日韩精品亚洲精品国产精品| 中文字幕一区久久综合| 黄色在线免费高清观看| 国产爆操白丝美女在线观看| 久久综合九色综合欧美| 欧美日韩黄片免费试看 | 伊人久久青草地综合婷婷| 日韩欧美一区二区不卡看片| 中文字幕一二区在线观看| 国产又大又黄又粗的黄色| 午夜精品成年人免费视频| 在线免费国产一区二区三区| 日本道播放一区二区三区| 精品偷拍一区二区三区| 91亚洲人人在字幕国产| 中文字幕无线码一区欧美 | 国产亚洲午夜高清国产拍精品| 中文字幕久热精品视频在线| 欧美国产日本免费不卡| 国产午夜精品在线免费看| 欧美综合色婷婷欧美激情| 千仞雪下面好爽好紧好湿全文 |