awk數組實戰

1、數組求和

題目1:

已知文件內容如下:

[root@db01 ~]# cat awk1.txt
1
2
3
4
5
6
7
8
9

[root@db01 ~]# awk '{array[1]+=$1}END{for(key in array)print array[key]}' awk1.txt     
45

題目2:

已知文件內容如下:

[root@db01 ~]# cat awk2.txt
zhangsan     80
lisi         81.5
wangwu       93
zhangsan     85
lisi         88
wangwu       97
zhangsan     90
lisi         92
wangwu       88

要求輸出格式:(name: 姓名  average:平均成績  total:總成績)

解答:

[root@db01 ~]# awk '{array[$1]+=$2;array1[$1]++}END{for(key in array)print "Name:"key  "\tAverage:"array[key]/array1[key] "\ttotal:"array[key]}'  awk2.txt
Name:zhangsan   Average:85           total:255
Name:lisi              Average:87.1667  total:261.5
Name:wangwu     Average:92.6667  total:278

2、文件合併

題目1:

已知文件內容如下

[root@db01 ~]# cat filea.txt
韓海林 21歲
海林韓 23歲
韓林海 22歲
林海韓 24歲
[root@db01 ~]# cat fileb.txt
韓林海 男
海林韓 女
韓海林 女
林海韓 男


請使用 awk 命令將如下兩份文件中名字相同的兩行合併起來

解答:

[root@db01 ~]# awk '{if(NR != FNR){arrayb[$1]=$2}else {arraya[$1]=$2}}END{for(key in arraya)print key,arraya[key],arrayb[key]}' filea.txt fileb.txt   
韓海林 21歲 女
海林韓 23歲 女
韓林海 22歲 男
林海韓 24歲 男




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