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岁 男
转载于:https://blog.51cto.com/wanyuetian/1717133