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