Awk简介

Awk是一款内置 Linux/Unix 中常用于文本数据处理的优秀命令行工具。它支持用户自定义函数和动态正则表达式。Awk一般默认的工作方式是:以空格为默认分隔符把文件逐行读入并对文本的每行进行切片,切开的部分再进行各种匹配过滤处理。是日常网站运维,日志分析的首选小工具。

情景示例

为了了解服务器的运行状况,我们需要对服务器的日志进行快速有效的分析。虽然现在有很多商业、开源的分析软件提供图形可视化界面,辅助分析服务器的访问日志,但是他们大多需要事先在服务器端进行安装和繁琐的配置且存在这样那些的限制。使用 Awk命令(语言),可以让我们更快速·灵活·方便的直接从服务器的原始日志中捕获所需要的信息并作出分析报告,快速构思解决方案。

所有参考代码以下面的Apache标准示例日志为例:

139.9.6.98 - - [23/Oct/2015:16:01:57 +0800] "GET /free-xunlei-vip HTTP/1.1" 200 78461 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36"

当我们使用Awk默认的分割符(空白)时,我们可以从日志中解析出下面不同类型的信息:
$0 表示整个记录行
$1 表示访问 IP地址:139.9.6.98
$4 表示请求时间的前半部分:[23/Oct/2015:16:01:57
$9 表示请求的状态码:200
以此类推……
使用Awk从日志文件(access.log)中我们可以简单的解析出下面不同类型的信息:
awk ‘{print $1}’ access.log # IP 地址
awk ‘{print $4,$5}’ access.log # 日期和时间
awk ‘{print $7}’ access _log # URI请求路径
awk ‘{print $9}’ access _log # HTTP状态码
awk ‘{print $10}’ access _log # 响应大小
使用Awk从日志文件(access.log)中统计相同ip的访问次数并按从小到大排序
awk ‘{a[$1]+=1;}END{for(i in a){print a[i]” ” i;}}’ access.log | sort -g

暂先举例至此,容后补充。。。

comment-author avatars

Zhys

Cherish the time! Don't waste even nine seconds to remember the past, live in the present and for the future planning.

猜你喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

邮件通知