awk数组实战

1、数组求和

题目1:

已知文件内容如下:

[[email protected] ~]# cat awk1.txt
1
2
3
4
5
6
7
8
9

[[email protected] ~]# awk ‘{array[1]+=$1}END{for(key in array)print array[key]}‘ awk1.txt     
45

题目2:

已知文件内容如下:

[[email protected] ~]# 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:总成绩)

解答:

[[email protected] ~]# 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:

已知文件内容如下

[[email protected] ~]# cat filea.txt
韩海林 21岁
海林韩 23岁
韩林海 22岁
林海韩 24岁
[[email protected] ~]# cat fileb.txt
韩林海 男
海林韩 女
韩海林 女
林海韩 男

请使用 awk 命令将如下两份文件中名字相同的两行合并起来

解答:

[[email protected] ~]# 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岁 男



本文出自 “万越天的架构师之路” 博客,请务必保留此出处http://wanyuetian.blog.51cto.com/3984643/1717133

时间: 2024-12-07 12:16:11

awk数组实战的相关文章

(转)awk数组详解及企业实战案例

awk数组详解及企业实战案例 原文:http://www.cnblogs.com/hackerer/p/5365967.html#_label03.打印数组:1. [[email protected] test]# awk 'BEGIN{array[1]="zhurui";array[2]="zhuzhu";for(key in array) print key,array[key]}'2. 1 zhurui3. 2 zhuzhu4. [[email protect

awk入门及awk数组相关实战

知识点: l 记录与字段 l 模式匹配:模式与动作 l 基本的awk执行过程 l awk常用内置变量(预定义变量) l awk数组(工作常用) l awk语法:循环.条件 l awk常用函数 l 向awk传递参数 l awk引用shell变量 l awk小程序及调试思路 [[email protected] ~]# awk --version|head -1 GNU Awk 3.1.7 第1章 记录和字段 record记录==行, field字段相当于列,字段==列. awk对每个要处理的输入数

初学awk数组会遇到的几个常见问题

原题目: 处理以下文件内容,将域名取出并根据域名进行计数排序处理:(百度和sohu面试题) 答案的详细讲解请参考: http://lidao.blog.51cto.com/3388056/1912219 文件内容: http://www.etiantian.org/index.html http://www.etiantian.org/1.html http://post.etiantian.org/index.html http://mp3.etiantian.org/index.html h

shell数组和awk数组

awk终于能入门了,所以整理了该文章,内容大多来自网上. 一.bash支持一维数组(不支持多维数组),没有限定数组的大小.在shell中,用括号来表示数组,数组元素用空格符号分割开.类似于C语言,数组元素的下标由0开始编号.获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0 1. 定义数组 数组名array,元素a b c [[email protected]~]# array=(a b c) 2.获取所有元素 [[email protected]~]# echo ${a

awk数组用法

两个文件,从文件b首列查找出等于文件a的行并输出[[email protected] ~]# cat a1367[[email protected] ~]# cat b1 2 32 3 43 4 54 5 65 6 76 7 87 8 9 shell脚本[[email protected] ~]# cat jieguo #!/bin/bashy=`sed -n 'p' a |wc -l`  #a 行数x=`sed -n 'p' b |wc -l`  #b行数for((i=1;i<=$y;i++)

awk 数组理解与应用

awk 数组无须实现定义 ckl[abc]=6 ckl[xyz]=9 abc 为下标名称 9 则为下标对应的值 BEGIN 为模式前匹配,即为匹配之前操作 END 为模式匹配后,即为匹配后操作 如常用的统计TCP状态的awk命令 # netstat -ant | awk '/^tcp/{STA[$NF]++}END{for ( k in STA) {print k,STA[k]}}' TIME_WAIT 4 CLOSE_WAIT 19 FIN_WAIT2 1 ESTABLISHED 135 LA

获取连接状态数的awk数组命令

awk -n|more [email protected]780:~/Icpp/server$ netstat -n|more 激活Internet连接 (w/o 服务器) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 28 0 10.8.0.171:43313 91.189.92.10:443 CLOSE_WAIT tcp 0 0 10.8.0.171:37374 116.213.120.232:80 ESTABLISH

awk数组计数和去重---统计域名访问次数

1.awk数组 假设我们有一个酒店 酒店<===>Green 酒店里面有几个房间515,516,517,519这几个房间 酒店515房间<===>GreenHotel[515] 酒店516房间<===>GreenHotel[516] 酒店517房间<===>GreenHotel[517] 酒店519房间<===>GreenHotel[519] 酒店房间里面入住客人 酒店110房间住着xiaowei<===>greenhotel[515

awk数组

1.使用awk数组统计出以下域名中相同域名出现的次数 [[email protected]]# cat url.txt  http://www.etiantian.org/index.html http://www.etiantian.org/1.html http://post.etiantian.org/index.html http://mp3.etiantian.org/index.html http://www.etiantian.org/3.html http://post.etia