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下对文本和数据进行 ...
随机推荐
- MySQL优化|一分钟带你了解单表优化
在开始前,分享给大家我看过觉得讲数据库讲的算是很不错的,也在B站拥有百万播放量的教程. 这个MySQL视频是动力节点的老杜讲解,个人也很喜欢老杜的教学风格,老杜真的是从MySQL基础一点点带我入门,基 ...
- istio部署问题Q&A
端口绑定无权限 创建Gateway,提示绑定端口无权限. 2020-12-27T12:25:30.974288Z warning envoy config gRPC config for type.g ...
- Docker------Linux安装Docker
1.添加yum源 yum install epel-release –y yum clean all yum list 2.安装并运行Docker yum install docker-io –y s ...
- 有没有一种组合字体,中文是宋体,英文是times new roman?
有没有一种组合字体,中文是宋体,英文是times new roman? 由于日常科研工作书写需要,想问问各位大神有没有一种字体,中文是宋体,西文是times new roman,这样写论文好方便啊有没 ...
- CentOS 7 设置日期和时间 timedatectl
CentOS 7 设置日期和时间 在CentOS 6版本,时间设置有date.hwclock命令,从CentOS 7开始,使用了一个新的命令timedatectl. timedatectl [root ...
- 4.3 Python3进阶-函数嵌套和嵌套调用
>>返回主目录 源码 # 函数嵌套 def func1(): print("这是外部函数") def func2(): print("这是内部函数1" ...
- 高频访问SQLite数据库
SQLite 是一款开源的 SQL 数据库引擎,由于其自包含.无服务.零配置和友好的使用许可(完全免费)等特点,在桌面和移动平台被广泛使用. 在应用开发过程中,如果想保存点数据,自然而然地就会想到 S ...
- Yolo:实时目标检测实战(下)
Yolo:实时目标检测实战(下) YOLO:Real-Time Object Detection After a few minutes, this script will generate all ...
- MindSpore模型精度调优实践
MindSpore模型精度调优实践 引论:在模型的开发过程中,精度达不到预期常常让人头疼.为了帮助用户解决模型调试调优的问题,为MindSpore量身定做了可视化调试调优组件:MindInsight. ...
- PyTorch数据加载处理
PyTorch数据加载处理 PyTorch提供了许多工具来简化和希望数据加载,使代码更具可读性. 1.下载安装包 scikit-image:用于图像的IO和变换 pandas:用于更容易地进行csv解 ...