33、awk命令详解
33.1、命令介绍:
awk不仅仅是linux系统中的一个命令,而且是一种编程语言,可以用来处理数据和生成报告。
awk的数据可以是一个或多个文件,可以是来自标准输入,也可以通过管道获取标准输入,awk可以在命令
行上直接编辑命令进行操作,也卡伊编写成awk程序进行更为复杂的运用。
33.2、 区域和记录:
1、区域:
$0(取整行数据) $1 $2 $3 $4 $5....$NF(代表最后一个字段)
2、记录:
33.3、数据切割:
默认情况下是以空字符串为分割符来分割列的;
-F:以特定条件分割
[ :]+:以“:”和“ ”分割多行连接
NR:行数
{print $1} :要打印的内容
$0:表示一行
NF:表示最后一行
[root@m01 ~]# awk -F "[ /]+" 'NR>1 && NR<5 {print $2}' /etc/passwd
bin:
sbin:
var
[root@m01 ~]# awk 'NR>1 && NR<5 {print $0}' /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
33.4、awk数组:
1、awk数组介绍:
类似于shell中的数组
提供BEGIN和END的作用是给程序赋予初始状态和在程序结束之后执行一些扫尾工作;
任何在BEGIN之后列出的操作且在{}内,将在awk开始扫描输入之前执行,而END之后列出
的操作将在扫描完全部的输入之后执行;
因此,通常使用BEGIN来显示变量和初始化变量,所有的内容写在一起;使用END来输出最终结果,后面接文件;
两者最好不要同时使用;
2、awk数组脚本:
[root@backup scripts]# vim awk.sh
#!/bin/awk
BEGIN{
array[1]="lc"
array[2]="lc1"
for (key in array)
print key,array[key]
}
[root@backup scripts]# awk -f awk.awk
1 lc
2 lc1
3、awk命令行模式:
(1)BEGIN模式:
[root@backup scripts]# awk 'BEGIN {array[1]="lc";array[2]="lc1";for (key in array) print key,array[key]}'
1 lc
2 lc1
(2)END模式:
1)测试参数:
[root@backup scripts]# cat awk1.txt
1 beijing
2 shanghai
2)使用命令:
[root@backup scripts]# awk '{array[$1]=$2}END{for(key in array) print key,array[key]}' awk1.txt
1 beijing
2 shanghai
#参数解释:
array[$1]=$2 #$1代表第一列内容作为下标,$2代表第二列的内容作为值,然后放入数组array后进行输出;
33.5、awk的企业案例题:
1、对网站地址进行统计:
(1)实验数据:
[root@backup scripts]# vim www.txt
http://mp3.lc.com/index.html
http://post.lc.com/index.html
http://post.lc.com/index.html
http://www.lc.com/index.html
http://www.lc.com/index.html
http://www.lc.com/index.html
(2)命令代码:
[root@backup scripts]# awk -F '/' '{array[$3]++}END{for (key in array) print key,array[key]}' www.txt | sort -rn -k 2 | head -10
www.lc.com 3
post.lc.com 2
mp3.lc.com 1
array[$3]=array[$3]+1等价于array[$3]++
1)代码的读取方式:
读取第一行:array[mp3.lc.com]=1
读取第二行:array[post.lc.com]=1 #被覆盖
读取第三行:array[post.lc.com]=2
读取第四行:array[www.lc.com]=1 #被覆盖
读取第五行:array[www.lc.com]=2 #被覆盖
读取第六行:array[www.lc.com]=3
2、对web日志分析,列出访问最多的ip地址,并按照降序排列:
(1)方法一:
[root@backup scripts]# awk '{s[$1]++} END {for (k in s) print k,s[k]}' access_log | sort -k 2 -nr | head -10
172.16.1.41 42
::1 6
172.16.1.254 5
(2)方法二:
[root@backup scripts]# awk '{print $1}' access_log | sort | uniq -c | sort -rn | head -10
42 172.16.1.41
6 ::1
5 172.16.1.254
3、统计企业工作中高并发web服务器不同网络连接状态对应的数量:
(1)方法一:
[root@backup scripts]# awk '/^tcp/ {S[$NF]++} END {for (k in S) print S[k],k}' netstat.log | sort -nr | head -10
7 LISTEN
1 ESTABLISHED
(2)方法二:
[root@backup scripts]# awk '/^tcp/ {print $NF}' netstat.log | sort | uniq -c | sort -rn | head -10
7 LISTEN
1 ESTABLISHED
4、解决机房流量暴涨案例问题:
(1)案例
拔掉上连口网线;
过几分钟将网线口接上;
查看流量服务器,看哪台服务器流量大:
如果所有服务器流量都很大,是dos攻击;
如果是就1到2台有问题就是服务器中毒,需要将网线拔掉,
然后重装服务器或迁移到其它服务器上;
(2)解决代码:
输出格式:[访问次数*单个文件大小] [访问次数] [文件名(需要带url)]
方法一:
使用纯awk命令,比较难理解舍弃;
方法二:
[root@backup scripts]# awk '{print $7"\t"$10}' access_log | sort | uniq -c | awk '{print $1*$3"\t"$1"\t"$2}' | sort -rn | head -10
4961 1 /
3956 1 /icons/poweredby.png
2326 1 /icons/apache_pb.gif
572 2 /favicon.ico
36 6 /
0 42 /
33、awk命令详解的更多相关文章
- linux awk命令详解
linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...
- awk命令详解二
awk命令详解 简单使用: awk :对于文件中一行行的独处来执行操作 . awk -F :'{print $1,$4}' :使用‘:’来分割这一行,把这一行的第一第四个域打印出来 . 详细介绍: ...
- shell编程之awk命令详解
shell编程之awk命令详解 a:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; out ...
- linux awk命令详解,使用system来内嵌系统命令, awk合并两列
linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...
- Shell学习(五)—— awk命令详解
一.awk简介 awk是一个非常好用的数据处理工具,相对于sed常常作用于一整个行的处理,awk则比较倾向于一行当中分成数个[字段]处理,因此,awk相当适合处理小型的数据数据处理.awk是一种报 ...
- awk命令详解
搜索 纠正错误 添加实例 awk 文本和数据进行处理的编程语言 补充说明 awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入(stdin).一个或多个文件 ...
- [Linux] linux awk命令详解
reference : http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html 简介 awk是一个强大的文本分析工具,相对于g ...
- [转]linux awk命令详解
原文链接 : http://blog.chinaunix.net/uid-23302288-id-3785105.html awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢 ...
- Linux awk命令详解??????????(研究)
http://blog.chinaunix.net/uid-25120309-id-3801250.html 一. AWK 说明 awk是一种编程语言,用于在linux/unix下对文本和数据进行 ...
随机推荐
- 最全的go语言的时间格式
该文可以快速在Go语言中获得时间的计算. 在Go中获取时间 如何获取当前时间 now := time.Now() fmt.Printf("current time is :%s", ...
- 马哥Linux SysAdmin学习笔记(三)
CentOS 5和6的启动流程: Linux:kernel+rootfs kernel:进程管理,内存管理,网络管理,驱动程序,文件系统,安全功能 rootfs: glibc 库:函数集合,funct ...
- Linux服务之Samba服务篇
Samba服务 桑巴Smb是基于cs架构 作用:用于跨平台进行文件共享 优点:兼容性好,较为安全(具备身份验证) 缺点:仅限内网环境使用 应用:一般在办公环境下使用 rz 也是一种可以在Windows ...
- vue+element-ui, el-upload组件 文件上传之前return false,会自动调用文件移除回调问题
日常搬砖的时候,项目中在使用element-ui的上传组件,但是当我在文件上传文件之前的回调里面做了些文件格式的二次校验和文件大小的校验的时 然后 return false 会发现调用 文件移除的回调 ...
- IDEA 快速上手指南(全配置)(Day_23)
Idea快速入门指南 1.安装 1.1.安装 我们使用的是2017.3.4版本: 双击打开, 选择一个目录,最好不要中文和空格: 然后选择桌面快捷方式,请选择64位: 然后选择安装: 开始安装: 然后 ...
- jackson学习+CVE-2019-12086漏洞分析
jackson和fastjson差不多,都是用来更方便的处理json 国人用fastjson,老外用jackson/gson比较多 环境搭建: pom.xml: <dependency> ...
- 重新整理 .net core 实践篇————配置系统——军令(命令行)[六]
前言 前文已经基本写了一下配置文件系统的一些基本原理.本文介绍一下命令行导入配置系统. 正文 要使用的话,引入Microsoft.extensions.Configuration.commandLin ...
- 从Lombok到JSR-269
前言 Lombok的出现帮助开发人员在开发工程中消除了大部分冗余代码:繁琐的get.set方法甚至建造者模式. Lombok的实现方式是什么呢? 新建一个测试类使用Lombok的Getter和Sett ...
- Sparse R-CNN: End-to-End Object Detection with Learnable Proposals 论文解读
前言 事实上,Sparse R-CNN 很多地方是借鉴了去年 Facebook 发布的 DETR,当时应该也算是惊艳众人.其有两点: 无需 nms 进行端到端的目标检测 将 NLP 中的 Transf ...
- CVPR2020论文介绍: 3D 目标检测高效算法
CVPR2020论文介绍: 3D 目标检测高效算法 CVPR 2020: Structure Aware Single-Stage 3D Object Detection from Point Clo ...