文档章节

awk 分析格式化的日志

爱运动的小乌龟
 爱运动的小乌龟
发布于 2017/06/20 00:20
字数 1011
阅读 27
收藏 2

一、awk命令选项

二、awk介绍

awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk。
现在一般所说的awk就是gawk。

三、awk特点

awk程序的报告生成能力通常用来从大文本文件中提取数据元素并将它们格式化成可读的报告。最完美的例子是格式化日志文件。awk程序允许从日志文件中只过滤出你想要看的数据。

四、awk常用命令举例

4.1、awk命令格式

awk [options] program file

options :选项

program :程序

file:文件(待处理的数据文件)

4.2、参数介绍

-F fs

指定行中分隔数据字段的字段分隔符

-f file

指定程序脚本文件

4.3、awk处理文本数据

awk的基本特性之一就是它处理文本文件中数据的能力。它会自动给每行中的每个数据元素分配一个变量。

$0代表整个文本行 (指当前awk读取这一行,awk每一次读取文本中的一行进行处理)

$1代表文本行中的第1个数据字段

$2代表文本行中的第2个数据字段

$n代表文本行中的第n个数据字段

注意:每个数据字段在文本行中都是通过字段分隔符来划分的。awk中的默认字段分隔符是任意的空白字符(例如空格或制表符) 如果想要读取使用其他字段分隔符的文件,可以使用-F 选项指定

4.4、awk脚本

如果某编程语言一次只能执行一条命令,那么它不会有太大用处。awk编程语言允许你将多条命令组成一个正常的程序。在这我们可以把这些命令保存到一个文件中,这个文件我们就称为是awk的脚本文件。 格式:只要将每条命令放到一个新的行就好了,不需要用分号。

awk -F: -f script /etc/passwd

4.5、awk的BEGIN、END

awk在开始执行的时候会执行一次BEGIN,awk在执行完分析逻辑部分后,在结束之前会执行一次END.

4.6、awk内置变量

FS:Field Seperator, 输入时的字段分隔符

# awk 'BEGIN{FS=":"}{print $1,$7}' /etc/passwd

输出以tab符分割如下:

RS:Record Seperator, 输入行分隔符

OFS: Output Field Seperator, 输出时的字段分隔符;

ORS: Outpput Row Seperator, 输出时的行分隔符;

NF:Numbers of Field,字段数量

NR:Numbers of Record, 行号;所有文件的一并计数;

FNR:行号;各文件分别计数;

4.7、awk中匹配操作符及比较符

正则表达式需要放在/expr/中,/expr/必须出现在它要控制的程序脚本的左花括号前。

如:wk '/110.52.250.126/  {print $1}' access_2013_05_30.log

匹配操作符允许将正则表达式限定在数据行中的特定数据字段。

如:

第一个字段包含110.52.250.126的会输出。

awk ' ($1 ~ /110.52.250.126/)  {print $1}' access_2013_05_30.log

第一个字段中不包含110.52.250.126的会输出。

awk ' ($1 !~ /110.52.250.126/)  {print $1}' access_2013_05_30.log 

4.8、linux命令扩展

4.8.1、shell中的管道| command 1 | command 2:他的功能是把第一个命令command 1执行的结果作为command 2的输入传给command 2

4.8.2、

wc -l 统计行数

uniq -c 在输出行前面加上每行在输入文件中出现的次数

uniq -u 仅显示不重复的行

sort -nr

-n:依照数值的大小排序

-r:以相反的顺序来排序

-k:按照哪一列进行排序

head -10 取前十名

 

© 著作权归作者所有

爱运动的小乌龟
粉丝 3
博文 149
码字总数 43760
作品 0
朝阳
私信 提问
shell awk 的一些用法

#1、打印挂载目录的使用量,默认以空格为分割 df -Ph | awk '{ print $5,$6 }' #2、以空格、冒号、t、分号为分割 awk -F '[ :t;]' '{print $1}' #3、打印6.txt文件中的第3行至第5行,NR表示打......

流波葵羽
2017/08/28
0
0
脚本监控MySQL服务器

使用Redis监控的方式,监控MySQL服务器 #! /bin/bash #告警条件: #磁盘使用率超过70% #内存使用率超过50% #CPU使用率超过700%(服务器是24核心的) #空闲线程小于50 #出现错误或者警告日志 di...

青夜之衫
2017/12/04
0
0
linux下grep分析apache日志的命令集合

linux下grep分析apache日志的命令集合,不可错过的好文章,有了这些命令,秒杀江湖中大部分的apache日志分析。 实例: 月份英文简写英文全称 一月Jan.January 二月Feb.February 三月Mar.Mar...

hmc0316
2013/03/06
2.8K
0
常用linux高级命令

-vi 编辑器 先进入命令模式(Esc) :/str 查找str,按n下一处,按N上一处 :1 回首行 :$到尾行 - web 访问日志统计(tomcat/apache/nginx) 1.根据访问IP统计UV awk ‘{print $1}’ access.log.t...

yown
2016/05/25
0
0
用shell进行log分析--老狼

ITSEO学员老狼投稿文章首发,转载请注明出处! 锄禾日当午,日志分析为何非要费时一上午呢……………….. 一、开篇要说的话 为何要日志分析昆哥说了:“首先要知道数据做什么用,怎么用,分析...

刀心
2015/06/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
640
10
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
35
0
spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
19
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
65
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
63
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部