麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 服務(wù)器 > Linux服務(wù)器 > 正文

Linux中的awk數(shù)組的基本使用方法

2024-09-05 23:04:56
字體:
供稿:網(wǎng)友

1.awk數(shù)組描述

在其他的編程語言中,數(shù)組的下標(biāo)都是從0開始的,也就是說,如果想反向引用數(shù)組中 的第一個元素,則需要引用對應(yīng)的下標(biāo)[0],在awk中數(shù)組也是通過引用下標(biāo)的方法,但是在awk中數(shù)組的下標(biāo)是從1開始的,在其他語言中,你可能會習(xí)慣于先“聲明”一個數(shù)組,在awk中,則不用這樣,直接為數(shù)組的元素賦值即可(其實(shí)如果自己給數(shù)組賦值,下標(biāo)從1或者從0開始那就無所謂了!)

2.在聲明數(shù)組時,可能值很多,命令太長,降低命令可讀性,所以使用反斜杠“/”,來進(jìn) 行換行,效果是完全一樣的,代碼如下所示:

[zkpk@master as]$ awk 'BEGIN{arr[1]="one";arr[2]="two";arr[3]="three"/;arr[4]="four";print arr[3]}'three[zkpk@master as]$ awk 'BEGIN{arr[1]="one";arr[2]="two";arr[3]="three";arr[4]="four";print arr[3]}'three

3.數(shù)組的元素設(shè)置為空,是允許的,當(dāng)數(shù)組中沒有某個元素而直接引用它的時候,它默認(rèn)被賦值為空,所以判斷某個元素是否存在,不能采用數(shù)組元素值為空的方法,而應(yīng)該采用下面的方法:

[zkpk@master as]$ awk 'BEGIN{arr[1]="one";arr[2]="two";arr[3]="three";if(4 in arr){print "four in this arr"}}'[zkpk@master as]$ awk 'BEGIN{arr[1]="one";arr[2]="two";arr[3]="three";if(3 in arr){print "three in this arr"}}'three in this arr

也可以采用取反的方式(使用運(yùn)算符!)

[zkpk@master as]$ awk 'BEGIN{arr[1]="one";arr[2]="two";arr[3]="three";if(!(4 in arr)){print "four not in this arr"}}'four not in this arr

4.awk數(shù)組下標(biāo)

在awk中數(shù)組的下標(biāo)不僅可以是“數(shù)字”,還可以是“任意字符串”,其實(shí),awk中的數(shù)組本來就是“關(guān)聯(lián)數(shù)組”,之所以先用數(shù)字作為下標(biāo)舉例子是為了方便之前的習(xí)慣,能夠有個好的過渡,不過,以數(shù)字作為數(shù)組的下標(biāo)在某些場景有一定的優(yōu)勢,但是本質(zhì)上也是“關(guān)聯(lián)數(shù)組”,awk默認(rèn)會把“數(shù)字”下標(biāo)轉(zhuǎn)換成“字符串”,所以它本質(zhì)上還是一個使用字符串作為下標(biāo)的“關(guān)聯(lián)數(shù)組”

5.刪除數(shù)組元素

使用 delete 可以刪除數(shù)組中的元素,也可以使用 delete 刪除整個數(shù)組

[zkpk@master as]$ awk 'BEGIN{arr[1]="one";arr[2]="two";arr[3]="three";/> delete arr[1];print arr[1]}'____(空)[zkpk@master as]$ awk 'BEGIN{arr[1]="one";arr[2]="two";arr[3]="three";/print arr[1];print arr[3];delete arr;print arr[1]}'onethree____(空)

6.使用for循環(huán)遍歷數(shù)組

語法:for(變量 in 數(shù)組名){ 代碼語句 }

注:其中變量循環(huán)的是數(shù)組的下標(biāo)

[zkpk@master as]$ awk 'BEGIN{arr[1]="one";arr[2]="two";arr[3]="three";arr[4]="four";/> for ( i in arr){print arr[i]}}'fouronetwothree#無序的打印數(shù)組元素,進(jìn)一步證明其是“關(guān)聯(lián)數(shù)組”#有序的打印數(shù)組元素[zkpk@master as]$ awk 'BEGIN{arr[1]="one";arr[2]="two";arr[3]="three";arr[4]="four";/for ( i=1;i<=4;i++){print arr[i]}}'onetwothreefour

7.awk數(shù)組使用實(shí)例

[zkpk@master as]$ awk 'BEGIN{a=1;print a; a=a+1 ; print a}'12[zkpk@master as]$ awk 'BEGIN{a=1;print a; a++ ; print a}'12

將變量a設(shè)置為1,對其進(jìn)行自加運(yùn)算,則其數(shù)值會增加1,這不難理解,那么如果變量a是一個字符串哪?

[zkpk@master as]$ awk 'BEGIN{a="test";print a; a++ ; print a}'test

當(dāng)a的值為字符串時,竟然也可以參與運(yùn)算,而且可以看出,字符串被當(dāng)成數(shù)字0參與運(yùn)算,那么空字符串參與運(yùn)算時也會被當(dāng)成0運(yùn)算嗎?

[zkpk@master as]$ awk 'BEGIN{a="";print a; a++ ; print a}'____(空)

結(jié)果顯示,空字符串在參與運(yùn)算時也會被當(dāng)做數(shù)字0,之前我們說過,當(dāng)我們引用數(shù)組中一個不存在的元素,元素被賦值成空字符串,當(dāng)對這個元素進(jìn)行自加運(yùn)算時,元素的值就變成了1,因此當(dāng)我們對一個不存在的元素進(jìn)行自加運(yùn)算后,這個元素的值就變成了自加的次數(shù),自加x次,元素的值就被賦值為x,自加y次元素的值就被賦值為y,所以我們可以通過awk數(shù)組的這個特性來統(tǒng)計文本中某字符串出現(xiàn)的次數(shù),代碼如下所示

[zkpk@master as]$ cat textAliceBobTomPeterAliceAliceTomBobPeterBob[zkpk@master as]$ awk '{count[$1]++};END{for(i in count){print i,count[i]}}' textBob 3Tom 2Alice 3Peter 2

這回你該發(fā)現(xiàn)awk數(shù)組這個特性的強(qiáng)大所在了吧,好,也許你會說我不用awk照樣可以統(tǒng)計啊,代碼如下所示:

[zkpk@master as]$ cat text | sort | uniq -c   3 Alice   3 Bob   2 Peter   2 Tom

好吧,我承認(rèn)你這個思路很棒,但是你看看下面例子哪?統(tǒng)計文本中人名出現(xiàn)的次數(shù)

[zkpk@master as]$ cat -tE textAlice^IBob$Bob^IAlice Alice   Peter$Tom Bob$Peter Alice $Alice Tom$Alice^I^ITom $Tom Peter$Bob Bob$Peter Alice$Bob Alice Alice  Tom$#我們可以看出上面的文本中人名之間的分隔符有制表符,也有空格,來吧,統(tǒng)計人名出現(xiàn)的次數(shù)吧,#我使用awk數(shù)組的方式可以這樣統(tǒng)計[zkpk@master as]$ awk '{for(i=1;i<=NF;i++){count[$i]++} }END{for(j in count)/{print j , count[j]}}' textBob 6Tom 5Alice 9Peter 4

但若你不用awk,非得用其他命令實(shí)現(xiàn)可以參考如下代碼( ^_^ )

[zkpk@master as]$ cat text | tr -s "/t" " " | tr -s " " "/n" | sort | uniq -c   9 Alice   6 Bob   4 Peter   5 Tom

結(jié)尾

本文介紹了awk數(shù)組的基本使用方法,但是要學(xué)會靈活的運(yùn)用,我在上面的示例中也寫出了一些可以在某種程度上替換awk數(shù)組的方式,所以本文不單單是介紹awk數(shù)組該如何使用,而是如何在合適的場景,選擇出最優(yōu)的解決方案,快速高效的解決問題。這就是我一直追求的,也是我學(xué)習(xí)Linux命令的真實(shí)意圖。

以上所述是小編給大家介紹的Linux中的awk數(shù)組的基本使用方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對VEVB武林網(wǎng)網(wǎng)站的支持!


注:相關(guān)教程知識閱讀請移步到服務(wù)器教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 九九热色| 久久久国产精品成人免费 | 草碰人人 | 久久2019中文字幕 | 久久久av亚洲男天堂 | 亚洲电影在线播放 | 国产一级一级片 | 日韩在线欧美在线 | 成人h视频在线 | 999久久久| 欧洲精品久久 | 精品亚洲午夜久久久久91 | 狠狠色成色综合网 | 日韩中文字幕一区二区三区 | 91短视频版高清在线观看www | 精品偷拍久久 | 亚州精品天堂中文字幕 | 在线成人精品视频 | 永久免费在线观看av | 大胆在线日本aⅴ免费视频 美国黄色毛片女人性生活片 | 精品国产一区二区三区成人影院 | 91成人久久| 亚洲伊人色欲综合网 | 国产亚洲精品成人 | 久久最新免费视频 | 国产午夜电影在线观看 | 黄在线免费 | 毛片电影在线看 | 欧美精品一区二区三区在线 | 爽爽淫人综合网网站 | 久久久久久久爱 | 成人三级免费电影 | 亚洲片在线观看 | 一本色道久久综合亚洲精品图片 | 男人午夜小视频 | 国产一级毛片不卡 | 羞羞的视频免费在线观看 | 欧美精品欧美极品欧美激情 | 久草在线公开视频 | 日韩一级片免费 | 欧美日韩高清一区二区三区 |