awk簡單練習(2)

AWK

一、NF $NF

$NF 代表:最後一個列(field)

NF 代表:瀏覽記錄的域個數


ls -l |awk '/^d/ {print $NF}'

   查看當前目錄下的所有目錄文件

[root@lee1 opt]# cat a
1.2.3.4.5
[root@lee1 opt]# awk -F . '{print NF}' a
5


二、FS OFS

FS 輸入字段分隔符(缺省爲:space:),相當於-F選項

OFS輸出字段分隔符(缺省爲:space:)

[root@lee1 opt]# cat a
1.2.3.4.5
[root@lee1 opt]# awk -F . '{print NF}' a
5
[root@lee1 opt]# awk -F . 'BEGIN {OFS="/"}{NF=5;print $0}' a
1/2/3/4/5



三、AWK匹配

有這樣需求:需要提取一個zip包中文件所在的目錄,就是文件所在的上層目錄的絕對路徑

比如 a/b/c.sh c.sh文件的路徑就是 a/b

zip包的內容如下 :


unzip -l game.zip |awk '/game\//&& !/\/$/ {print $4}' | awk -F / 'BEGIN {OFS="/"}{NF=NF-1;print $0}'

awk中的匹配段的內容意思是:找到有“game/” 且不以“/” 結尾的行

查看結果:


四 數組

awk的數組,一種關聯數組,下標可以是數字和字符串。因無需對數組名和元素提前聲明,也無需指定元素個數

有這樣的需求:有兩列數據,第一列爲用戶名,第二列爲數值,計算出總值,並按第二列的值排序


[root@lee1~]#cat a
a 1
b 11
c 123
a 2
v 3
c 245
b 235
[root@lee1~]#awk '{name[$1]+=$2} END{for(i in name) { if(name[i] != null)print i , name[i]}}' a | sort -n -k2 -r
c 368
b 246
v 3
a 3





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章