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. Win7通过cmd进入d盘的方法

    Win7通过cmd进入d盘的方法 时间:2016-05-13 15:06:03 作者:yunchun 来源:系统之家  手机查看 评论 我们在使用Win7系统过程中,对于经常使用DOS程序的朋友们来说 ...

  2. python上下文管理协议,即with的详细使用

    一.with obj as f: #代码块... 二.执行流程: 1.with obj --->触发obj.__enter__(),需要在obj里写__enter__(self),在它里边写返回 ...

  3. cron 任务的典型格式是: 分钟(0-59) 小时(0-24) 日(1-31) 月(1-12) 星期(0-6) 要执行的命令

    https://linux.cn/article-9687-1.html Cron 是您可以在任何类 Unix 操作系统中找到的最有用的实用程序之一.它用于安排命令在特定时间执行.这些预定的命令或任务 ...

  4. 。 (有些情况下通过 lsof(8) 或 fuser(1) 可以 找到有关使用该设备的进程的有用信息)

    umount时目标忙解决办法 标签(空格分隔): ceph ceph运维 osd 在删除osd后umount时,始终无法umonut,可以通过fuser查看设备被哪个进程占用,之后杀死进程,就可以顺利 ...

  5. 重定向-管道技术-xargs命令详解

    重定向 什么是重定向? 将原本要输出在屏幕的内容,重新定向输出到指定的文件或设备中. 为什么要使用重定向? 1.备份的时候需要知道备份的结果. 2.屏幕上输出信息比较重要的时候需要保存下来. 3.定时 ...

  6. node.js学习(5)读写文件(同步异步)

    1 导入文件系统库 # 同步的 读文件 写文件 # 异步 需要用异步处理耗时

  7. VTA硬件

    VTA硬件 提供了VTA硬件设计的自上而下的概述.本硬件设计涵盖两个级别的VTA硬件: VTA设计及其ISA硬件-软件接口的体系结构概述. VTA硬件模块的微体系结构概述以及计算核心的微代码规范. V ...

  8. MinkowskiEngine Miscellaneous Classes杂类

    Miscellaneous Classes杂类 内核生成器 class MinkowskiEngine.KernelGenerator(kernel_size = -1,stride = 1,dila ...

  9. 使用nGraph的Intel&#174;Xeon&#174;上的高性能TensorFlow

    使用nGraph的IntelXeon上的高性能TensorFlow High-performance TensorFlow* on Intel Xeon Using nGraph 最近宣布了nGrap ...

  10. 远程服务调用RMI框架 演示,和底层原理解析

    远程服务调用RMI框架: 是纯java写的, 只支持java服务之间的远程调用,很简单, // 接口要继承 Remote接口 public interface IHelloService extend ...