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命令详解的更多相关文章

  1. linux awk命令详解

    linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...

  2. awk命令详解二

    awk命令详解 简单使用: awk :对于文件中一行行的独处来执行操作 . awk -F :'{print $1,$4}'   :使用‘:’来分割这一行,把这一行的第一第四个域打印出来 . 详细介绍: ...

  3. shell编程之awk命令详解

    shell编程之awk命令详解 a:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; out ...

  4. linux awk命令详解,使用system来内嵌系统命令, awk合并两列

    linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...

  5. Shell学习(五)—— awk命令详解

    一.awk简介   awk是一个非常好用的数据处理工具,相对于sed常常作用于一整个行的处理,awk则比较倾向于一行当中分成数个[字段]处理,因此,awk相当适合处理小型的数据数据处理.awk是一种报 ...

  6. awk命令详解

    搜索 纠正错误  添加实例 awk 文本和数据进行处理的编程语言 补充说明 awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入(stdin).一个或多个文件 ...

  7. [Linux] linux awk命令详解

    reference : http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html 简介 awk是一个强大的文本分析工具,相对于g ...

  8. [转]linux awk命令详解

    原文链接 : http://blog.chinaunix.net/uid-23302288-id-3785105.html   awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢 ...

  9. Linux awk命令详解??????????(研究)

    http://blog.chinaunix.net/uid-25120309-id-3801250.html 一.  AWK 说明  awk是一种编程语言,用于在linux/unix下对文本和数据进行 ...

随机推荐

  1. [文章]Linux宕机故障分析案例

    [文章]Linux宕机故障分析案例 已采纳 收藏  0  1669 0 马化辉 2018-07-01发布 背景 在Linux系统环境下,服务器宕机发生的频率比较小,但是不少工程师或多或少都会遇到这 ...

  2. SSH远程主机秘钥失效的解决方法

    一.问题描述: 远程主机的SSH秘钥发生了变化,在使用SSH远程登录的时候,提示如下 [root@localhost ~]# ssh root@172.16.48.10 @@@@@@@@@@@@@@@ ...

  3. spring MyBatis的相关面试题

    (相关面试题! 供参考!) 1.ORM框架有哪些? MyBatis:半自动化框架(不是纯ORM) 需要写动态SQL语句,实体类和SQL语句之间建立映射关系 Spring:轻量级框架, Java EE的 ...

  4. Spring Boot自定义属性配置文件开启提示

    前言:有时候在Sping Boot项目中需要自定义属性.又想在配置文件(*.properties)中显示提示时. 测试环境:Sping Boot2x + Maven + Lombok 准备测试的配置类 ...

  5. Nacos源码结构和AP模式注册中心实现介绍

    前言 NacosAP模式源码分析目录 微服务下的注册中心如何选择 Nacos使用和注册部分源码介绍 Nacos服务心跳和健康检查源码介绍 Nacos服务发现 Nacos源码结构介绍 Nacos版本基于 ...

  6. Docker学习(7) 构建镜像

    构建docker镜像 1 构建镜像的两种方式 1 通过容器构建镜像 2 通过Dockerfile构建镜像

  7. Jupyter Notebook出现kernel error情况

    今天重新装了anaconda,在运行时发现真快,可是在运行selenium的代码时候,发现自己按照以前写得帖子得步骤做,同样还是出现了错误,心里不免大吃一惊,难道我的做法是错的?等到发现有个  ker ...

  8. GStreamer 1.18.4稳定的错误修复版本

    GStreamer 1.18.4稳定的错误修复版本GStreamer团队宣布最喜欢的跨平台多媒体框架的稳定的1.18版本系列中的另一个错误修复版本!此版本仅包含错误修复和重要的安全修复程序,并且从1. ...

  9. 基于SSL(TLS)的HTTPS网页下载——如何编写健壮的可靠的网页下载

    源码下载地址案例开发环境:VS2010本案例未使用openssl库,内部提供了sslite.dll库进行TLS会话,该库提供了ISSLSession接口用于建立SSL会话. HTTP协议很简单,写个简 ...

  10. Postman 的基本功能按钮解释、发送post请求及get请求、查看响应信息

    一.界面功能按钮: 二.postman模拟发送post请求: 三.postman模拟get请求: 选择请求类型-->输入请求URL-->点击send发送 四.查看响应信息