去哪网的面试:数据量不大的话用awk最方便,但长时间没有用过了,忘记了awk数组的用法。
在这里复习一下。
假设数据格式为:
178.60.128.31 www.google.com.hk 193.192.250.158 www.google.com 210.242.125.35 adwords.google.com 210.242.125.35 accounts.google.com.hk 210.242.125.35 accounts.google.com 210.242.125.35 accounts.l.google.com 64.233.181.49 www.google.com 212.188.10.167 www.google.com 23.239.5.106 www.google.com 64.233.168.41 www.google.com 62.1.38.89 www.google.com 62.1.38.89 chrome.google.com 193.192.250.172 www.google.com 212.188.10.241 www.google.com 37.228.69.57 www.google.com 222.255.120.42 www.google.com 222.255.120.42 www.gstatic.com 212.188.10.167 www.googleapis.com 64.233.181.49 www.googleapis.com 64.233.181.49 fonts.googleapis.com 193.192.250.158 plus.google.com 193.192.250.158 talkgadget.google.com 193.192.250.158 ssl.gstatic.com 193.192.250.158 images-pos-opensocial.googleusercontent.com 193.192.250.158 images1-focus-opensocial.googleusercontent.com 193.192.250.158 images2-focus-opensocial.googleusercontent.com 193.192.250.158 images3-focus-opensocial.googleusercontent.com 193.192.250.158 images4-focus-opensocial.googleusercontent.com 193.192.250.158 images5-focus-opensocial.googleusercontent.com 193.192.250.158 images6-focus-opensocial.googleusercontent.com 193.192.250.158 clients4.google.com 222.255.120.42 google.com 222.255.120.42 apis.google.com 222.255.120.42 clients1.google.com 193.192.250.158 clients2.google.com 193.192.250.158 clients3.google.com 193.192.250.158 clients5.google.com 64.233.181.49 maps.google.com 64.233.181.49 mts0.google.com 64.233.181.49 maps.gstatic.com
awk的统计代码:
awk '{arr[$1]++;}END{for(i in arr){print i , arr[i] }}' test.txt
输出:
[blog@AY1310301904525972ddZ ~]$ awk '{arr[$1]++;}END{for(i in arr){print i , arr[i] }}' test.txt 212.188.10.241 1 64.233.168.41 1 23.239.5.106 1 193.192.250.158 15 178.60.128.31 1 37.228.69.57 1 212.188.10.167 2 193.192.250.172 1 62.1.38.89 2 64.233.181.49 6 210.242.125.35 4 222.255.120.42 5
增加排序:
[blog@AY1310301904525972ddZ ~]$ awk '{arr[$1]++;}END{for(i in arr){print i , arr[i] }}' test.txt | sort -n -k 2 178.60.128.31 1 193.192.250.172 1 212.188.10.241 1 23.239.5.106 1 37.228.69.57 1 64.233.168.41 1 212.188.10.167 2 62.1.38.89 2 210.242.125.35 4 222.255.120.42 5 64.233.181.49 6 193.192.250.158 15
=============对网友:【hattah】 回答的补充===============
测试了两种方法的效率:
理论上sort排序数据量越大,速度越慢。
实测结果:
[blog@AY1310301904525972ddZ ~]$ time awk '{print $1}' test.txt |sort|uniq -c 1380 178.60.128.31 17312 193.192.250.158 1160 193.192.250.172 4640 210.242.125.35 2320 212.188.10.167 1160 212.188.10.241 5734 222.255.120.42 1160 23.239.5.106 1160 37.228.69.57 2320 62.1.38.89 1160 64.233.168.41 6894 64.233.181.49 real 0m0.236s user 0m0.228s sys 0m0.004s
[blog@AY1310301904525972ddZ ~]$ time awk '{arr[$1]++;}END{for(i in arr){print i , arr[i] }}' test.txt | sort -n -k 2 193.192.250.172 1160 212.188.10.241 1160 23.239.5.106 1160 37.228.69.57 1160 64.233.168.41 1160 178.60.128.31 1380 212.188.10.167 2320 62.1.38.89 2320 210.242.125.35 4640 222.255.120.42 5734 64.233.181.49 6894 193.192.250.158 17312 real 0m0.025s user 0m0.022s sys 0m0.001s
相关推荐
`cut`用于从日志文件中提取IP地址,`sort`和`uniq`用于统计每个IP的出现频率,而`awk`则构建了一个关联数组来追踪每个IP的访问次数。最终通过`sort`按访问次数降序排列,输出最常访问的IP列表。 ### 知识点五:亚瑟...
4. **统计Nginx日志中每个IP的访问量**: `awk`命令用于提取日志中的IP地址(`$1`),`sort -u`进行排序和去重,`uniq -c`统计每个唯一IP的数量。 5. **计算所有进程占用内存的总和**: `ps aux`列出所有进程的...
- NAT(网络地址转换)解决了公网IP地址不足的问题,将多个私有IP映射到一个或几个公网IP。 - ARP(地址解析协议)用于根据IP地址查找对应的MAC地址。 13. **DNS**: - DNS(域名系统)的作用是将域名解析成IP...
- 使用`cat`、`awk`、`uniq`、`sort`和`head`命令组合,可以统计Nginx访问日志中每个IP地址的访问次数,并列出前10名。 - `awk`用于提取日志中的IP地址并计数。 - `uniq`与`sort`结合使用来排序计数结果。 8. **...
16. **日志分析**:例如统计Nginx日志中IP出现次数,可以使用awk、grep、sort等命令进行处理。 17. **排序算法**:如二分查找、快速排序是基础算法,面试中可能要求现场编写实现。 18. **Linux系统启动流程**:...
### Linux面试题与答案知识点详解 #### 1. Linux系统中的文件类型与设备 - **普通文件**:最常见的文件类型,包含数据。 - **目录文件**:存储其他文件或目录的容器。 - **链接文件**:指向另一个文件的指针。 - **...
### Linux面试题解析 #### 一、Linux基本概念与文件系统 **1. 在Linux系统中,以文件方式访问设备。** - **知识点解析:**Linux操作系统中的一个重要特性就是几乎所有的设备都被视为文件来处理。这包括硬件设备如...
在这篇文章中,我们将总结 Hadoop 大数据就业面试题中的知识点,涵盖 Hadoop 的安装、配置、进程、调度器、MapReduce 编程语言等方面。 一、Hadoop 的安装和配置 在安装 Hadoop 之前,需要 root 账户登录,然后...
3. **使用awk统计httpd访问日志中IP出现次数**:利用`awk`的数组功能,数组`ip`的键是日志中的客户端IP,值是出现次数。通过`++`操作符对IP进行计数,最后通过`END`块遍历数组输出结果。 4. **标准输出和错误输出的...
Linux运维是IT领域中的一个重要分支,它涉及到系统管理、网络配置、服务器优化、故障排查等多个方面。本资源“免费的Linux运维中级面试题.rar”包含了知名公司对中级Linux运维工程师的面试题,可以帮助求职者更好地...
通过脚本处理文本文件中的域名,并统计出现次数,是Linux系统中常见的文本处理任务之一。 **详细说明:** 给出的示例使用了`sed`、`awk`和`sort`等工具来完成任务: 1. **使用`sed`去除URL中的"http://"以及路径...
【互联网大公司面试笔试题运维面试题】 在互联网行业中,运维工程师是至关重要的角色,他们负责维护公司的IT基础设施,确保系统的稳定性和安全性。面试中,Linux运维工程师常常会被问及一系列技术问题,以下是对...
该命令读取日志文件,并使用`awk`提取IP地址,接着统计每个IP出现的次数,并输出前5名。 #### 8. 如何查看二进制文件的内容 对于二进制文件,通常无法直接阅读其内容,但可以使用`hexdump`命令以十六进制形式显示...
### Linux面试题详解 #### 一、Linux基础知识 1. **Linux系统的发展历史与特点** - Linux是一种自由和开放源代码的操作系统,由Linus Torvalds在1991年首次发布。 - 特点包括稳定性强、安全性高、支持多种硬件...
本文将围绕“Linux面试题(收集2)”这一主题,深入探讨和解析一系列常见的Linux面试问题,旨在帮助求职者或在职人员巩固和提升Linux知识。 【描述】:虽然描述为空,但根据标题我们可以推测这是一份集锦,包含了一...