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.etiantian.org/2.html

第一步:先来统计出一个域名的次数

[[email protected] files]# awk -F"[/]+" ‘{h[$2]+=1;print $2,h["www.etiantian.org"]}‘ url.txt 
www.etiantian.org 1
www.etiantian.org 2
post.etiantian.org 2
mp3.etiantian.org 2
www.etiantian.org 3
post.etiantian.org 3

以上统计出了www.etiantian.org域名出现的次数,从统计结果可以看出,这里出现了3次。

第二步:统计全部

[[email protected] files]# awk -F"[/]+" ‘{h[$2]+=1}END{for (key in h)print key,h[key]}‘ url.txt 
mp3.etiantian.org 1
post.etiantian.org 2
www.etiantian.org 3

h[$2]+=1 表示h[$2]=h[$2]+1

h[$2] 表示每次出现相同域名的次数   +1就表示当遇到相同的时候就加一次

for (key in h) 使用for循环来统计它们的次数

print key,h[key] 打印出出现相同域名及出现的次数

2、使用awk数组统计下列字母出现的次数

[[email protected] files]# cat array.txt 
a  1
b  3
c  2
d  7
b  5
a  3 
g  2
f  6
d  9

解答:

[[email protected] files]# awk ‘{h[$1]+=$2}END{for (key in h)print key,h[key]}‘ array.txt
a 4
b 8
c 2
d 16
f 6
g 2
时间: 2024-11-09 02:50:26

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

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对每个要处理的输入数

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数组详解及企业实战案例

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数组实战

1.数组求和 题目1: 已知文件内容如下: [[email protected] ~]# cat awk1.txt 123456789 [[email protected] ~]# awk '{array[1]+=$1}END{for(key in array)print array[key]}' awk1.txt     45 题目2: 已知文件内容如下: [[email protected] ~]# cat awk2.txt zhangsan     80lisi         81.5w