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岁 男