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

1.awk数组

假设我们有一个酒店

酒店<===>Green

酒店里面有几个房间515,516,517,519这几个房间

酒店515房间<===>GreenHotel[515]
酒店516房间<===>GreenHotel[516]
酒店517房间<===>GreenHotel[517]
酒店519房间<===>GreenHotel[519]

酒店房间里面入住客人

酒店110房间住着xiaowei<===>greenhotel[515]="xiaowei"
酒店119房间住着dakai<===>greenhotel[516]="dakai"
酒店120房间住着xiaoguangdong<===>greenhotel[517]="xiaoguangdong"
酒店114房间住着dabaojian<===>greenhotel[519]="dabaojian"

示例:

[[email protected]_Kai files]# awk ‘BEGIN{greenhotel[515]="xiaowei";greenhotel[516]="dtel[519]="dabaojian";for(hotel in greenhotel)print hotel,green[hotel]}‘

516

517

519

515

[[email protected]_Kai files]# awk ‘BEGIN{greenhotel[515]="xiaowei";greenhotel[516]="dakai";greenhotel[517]="xiaoguangdong";greenhotel[519]="dabaojian";for(hotelin greenhotel)print hotel,greenhotel[hotel]}‘
516 dakai
517 xiaoguangdong
519 dabaojian
515 xiaowei

企业面试题1:统计域名访问次数

处理以下文件内容,将域名取出并根据域名进行计数排序处理:(百度和sohu面试题)

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

思路:
1)以斜线为菜刀取出第二列(域名)
2)创建一个数组
3)把第二列(域名)作为数组的下标
4)通过类似于i++的形式进行计数
5)统计后把结果输出

过程演示:
第一步:查看一下内容

[[email protected] ~]# awk -F "[/]+" ‘{print $2}‘ file 
www.etiantian.org
www.etiantian.org
post.etiantian.org
mp3.etiantian.org
www.etiantian.org
post.etiantian.org

命令说明:
这是我们需要计数的内容

第二步:计数

[[email protected] ~]# awk -F "[/]+" ‘{i++;print $2,i}‘ file 
www.etiantian.org 1
www.etiantian.org 2
post.etiantian.org 3
mp3.etiantian.org 4
www.etiantian.org 5
post.etiantian.org 6
命令说明:
i++:i最开始是空的,当awk读取一行,i自身+1

第三步:用数组替换i

[[email protected] ~]# awk -F "[/]+" ‘{h[$2]++;print $2,h["www.etiantian.org"]}‘ file 
www.etiantian.org 1
www.etiantian.org 2
post.etiantian.org 2
mp3.etiantian.org 2
www.etiantian.org 3
post.etiantian.org 3
命令说明:
1)将i替换成h[$2];相当于我创建了一个数组h[],然后用$2作为我的房间号。但是目前房间里是没有东西的。也就是说h[$2]=h["www.etiantian.org"] and h["post.etiantian.org"] and h["mp3.etiantian.org"] 但是具体房间里是没有东西的也就是空。
2)h[$2]++就等于i++:也就是说我开始给房间里加东西;当出现同样的东西,我就++
3)print h["
4)综上,输出的结果中,每次出现www.etiantian.org时,h["www.etiantian.org"]就会++。因此最后的输出数字是3

第四步:输出最终计数结果

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

命令说明:
我们最终需要输出的是去重复以后的统计结果,所以得在END模块里进行输出
for(i in h)遍历这个数组,i里存的都是房间号
print i,h[i]:输出每一个房间号及其房间里的内容(计数结果)
时间: 2024-11-06 16:36:42

awk数组计数和去重---统计域名访问次数的相关文章

JSP:用隐式对象统计网站访问次数

JSP:用隐式对象统计网站访问次数 jsp 隐式对象 赵振江 隐式对象 application对象 利用隐式对象为某一网站编写一个JSP程序,统计该网站的访问次数. 一种情况是:按照客户进行统计(按照浏览器进行统计,一个浏览器如果访问网站的话,就算一次访问,换句话说如果这个浏览器刷新多次网站的话,也算是一次访问): 另一种情况:刷新一次页面,就算是一次访问. 要求用隐式对象去实现. counter.jsp <%@ page language="java" import="

JSP简单实现统计网页访问次数

JSP简单实现统计网页访问次数 需求:统计网页的访问次数 核心思想:利用application对象,将访问次数的信息放入application对象中,每次访问就+1.这里利用了application对象每次只有当应用关闭才被销毁的特性. 核心代码如下: <% Object obj =application.getAttribute("counter"); if(obj==null){ application.setAttribute("counter", ne

IIS日志——统计IP访问次数的一种方法

使用LogParser对IIS服务器被Hit访问的IP进行次数统计,方便结合防火墙IP***列表对IIS网站进行日志审计报表的编写 配置IIS网站的日志 下载进行日志分析的两个工具LogParser(命令行工具),下载地址:http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=24659LogParser Studio(图形化工具),下载地址:http://gallery.technet.microsoft.

ServletContext设置全局变量实现统计站点访问次数

概述: 通过servlet实例设置全局变量,记录多个servlet实例访问总次数. HttpServletDemo02.java: package com.fl.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletExc

数组去重统计排序

需求是:统计次数并按照要求排序: 思路: 第一步:拼接字符串,返回一个字符串数组: 第二步 :查询数组,去重并统计次数: 第三步:使用sort()函数进行排序: 第四步:join()函数.把数组元素放到字符串中,的确很绕,学程序的没办法,多练习. <!doctype html> <html> <head> <meta charset="utf-8"> <title>数组去重统计排序</title> <styl

awk数组统计

awk在脚本的处理中功能是很强大的,现在列出awk最常用的参数 例如有这么一个日志,需要统计出ip的访问次数 awk '{count[$1]++} END{for (i in count)print i, count[i]}' 1.txt 结果如图所示: 自己要是还有什么要求排序就可以了

初学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数组详解及企业实战案例 原文: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

Linux命令之awk数组使用范例

目录 取ifconfig bond0的IP地址    1 命令如下:    2 统计apache日志单IP访问请求数排名    2 第一种方法    2 第二种方法    2 统计域名访问量    3 第一种方法:    3 第二种方法:    3 计算每个人的总工资和平均工资    4 命令如下:    4 对本地IP和远程IP去重并统计重复数    4 命令如下:    5 统计源IP,端口及目的IP同时去重    6 命令如下:    6 美化效果如下:    7 取ifconfig bo