日志分析命令awk基础用法
awk
awk是一个很好用的文本处理工具,相对于sed常用用作一整行的处理,awk则比较擅长将一行分成数个字段来处理。而在我们性能测试中,可以awk可以帮助我们造数,也可以帮助我们分析日志。
简单来说,awk就是用一个循环实现的。首先awk读取文本的一行(默认是从第一行开始,淡然也可以根据条件选择行),然后根据你给的条件来处理这行的某个字段;处理完成后,再读取下一行,然后再根据条件去处理字段,直到处理完成所有的行。
awk的标准格式
awk '条件类型1{动作1} 条件类型2{动作2}.......'
awk常用的内置变量
NR:现在处理的是第几行数据
NF:每行一共的字段数 可以用来取倒数第一列,第二列,例如:awk '{print $(NF-1),$NF }' test01.txt $NF 代表最后一列,$(NF-1)代表倒数第二列
$0:代表一整行数据
$1:代表第一个字段,以此类推
RS 输入行分隔符(默认为回车)
ORS 输出行分隔符(默认为回车)
FS 字段分隔符(默认为空格)
-F 指定多个字段分隔符并且支持正则表达式(比FS更加强大一些)
OFS 输出字段分隔符(默认为空格)
格式化输出
print函数
特性
参数可以是变量、计算值、或字符串常量
字符串必须用双引号括起来
参数之间用逗号分隔(输出分隔符由变量OFS决定)
输出可以被重定向
输出和输入之间可以通过管道
printf函数
特性
返回给标准输出一个带有格式的字符串
不会在行尾自动换行
包含一个加引号的字符串
修饰符
“-” 左对齐
# 八进制加0 十六进制加0x
+ 加上正负号+或-
0 用0填充空白符
条件语句
格式:{if{(expression){
statement; statement;….
}
else if(expression){
statement; statement;….
}
else{ statement; statement;….
}
}
可以使用条件,对字段进行处理
实战演练
例1
如下文本我只想要第一列和第三列然后重定向到test001.txt中
awk '{print $1,$3}' example.txt >test001.txt
例2
如果字段的分隔符不是空格,那么我们需要先提前指定分隔符,使用-F或者FS,以passwd文件为例,每个字段是以冒号分隔的,我们想取出第二个字段,和第七个字段
awk -F':' '{print $2,$7}' /etc/passwd
例3
默认出输出字段分隔符是空格,如果想改变默认输出分隔符呢,比如改成|
文本test001,原来的内容
awk '{OFS="|"}{print $1,$2}' test001.txt
例4
默认输出行分隔符是回车,如果想把分隔符改成|呢,
文本test001,原来的内容,默认行分隔符为回车
例5
如果要处理的文本,默认不是以回车作为行的分隔符,我们希望处理之后,以回车作为空格符
要处理的文本,以”_”作为行的分隔符,我们想以回车为分隔符
awk 'BEGIN{RS="_"}{print $0}' test003.txt
例6
业务要求,一个播种墙号,对应一个波次号,播种墙号不能重复。文件中已有波次号(第二列),是重复的,但是每个号重复的数量不确定;需要自己添加播种墙号,播种墙号是连续的
思路:使用awk进行处理,先读取第一行的播次号,把他赋值给一个变量,然后拿每行的波次号和这个变量相比较,如果相等,则播种墙号不变,如果不等,则播种墙号+1
由于语句较长,因此,写成shell脚本
#$1的值赋值给qiang这个变量(这里的$1、$2指的是shell的参数,不是awk里面的)
#$2的值赋值给boci这个变量
#进行判断,如果$2(即文件里波次号)的值等于变量boci的值,那么输出原始文件整行和播种墙号
#如果$2(即文件里波次号)的值不等于变量boci的值,播种墙号+1,然后输出输出原始文件整行和播种墙号
日志分析命令awk基础用法的更多相关文章
- linux下常用的日志分析命令
linux下常用的日志分析命令 本文介绍下,在linux中常用的一些分析日志的命令行或脚本,有需要的朋友参考下. 形如下面这样的access.log日志内容: 211.123.23.133 ...
- nginx常用运维日志分析命令
nginx常用日志分析命令 运维人员必备 常用日志分析命令 1.总请求数 wc -l access.log |awk '{print $1}' 2.独立IP数 awk '{print $1}' acc ...
- 介绍了Apache日志文件每条数据的请意义以及一些实用日志分析命令
这篇文章主要介绍了apache日志文件每条数据的请意义,以及一些实用日志分析命令,需要的朋友可以参考下(http://wap.0834jl.com) 一.日志分析 如果apache的安装时采用默认的配 ...
- Linux常用的日志分析命令与工具
>>基础命令 操作 命令 说明 查看文件的内容 cat -n access.log -n显示行号 分页显示文件 more access.log Enter下一行,空格下一页,F下一屏,B上 ...
- Linux文本分析命令awk的妙用
基本用法 awk是一个强大的文本分析工具,简单来说awk就是把文件逐行读入,(空格,制表符)为默认分隔符将每行切片,切开的部分再进行各种分析处理 awk命令格式如下 awk [-F field-sep ...
- linux下常用的日志分析命令【转】
形如下面这样的access.log日志内容: 211.123.23.133 – - [10/Dec/2010:09:31:17 +0800] “GET /query/trendxml/district ...
- find命令的基础用法以及按文件修改时间查找文件
一般文件查找方法: find 命令学好是一件很有趣的事情,也可以帮你在查找系统文件的时候事倍功半,还可以与正则表达式结合使用,功能强大,是一个很好的查找工具.可以整体提高你的系统管理能力. 基础用法 ...
- Linux常用基本命令:三剑客命令之-awk基础用法
awk是一个超级强大的文本格式化处理工具,他与grep, sed命令被成为linux 三剑客命令 三剑客命令的特点: grep:只要用来匹配和查找文本 sed: 编辑匹配到文本 awk: 格式化文本, ...
- nginx日志分析命令记录
这是要注意的 可能因为 线上 nginx日志输出格式的不一样,一下命令未能展示正确的结果 流量速率分析的第三个命令 慢查询分析的第一二个命令 参考文档,nginx日志输出格式为 $remote_add ...
随机推荐
- CentOS7编译安装MariaDB
一.环境信息: 操作系统版本:CentOS Linux release 7.3.1611 (Core) 内核版本:3.10.0-514.el7.x86_64 MariaDB版本:mariadb-10. ...
- vue项目如何打包扔向服务器
vue项目如何打包扔向服务器 当我们将 vue 项目完成后,面临的就是如何将项目进行打包上线,放到服务器中.我使用的是 vue-cli(simple) 脚手架,所以就讲一下如何将项目进行打包,并放 ...
- 安卓ios app自动化测试用例模板
import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.android.AndroidElem ...
- Wannafly交流赛1 _A_有理数 【水】
Wannafly交流赛1 A有理数 [水] 链接:https://www.nowcoder.com/acm/contest/69/A 来源:牛客网 题目描述 有一个问题如下: 给你一个有理数v,请找到 ...
- maven Eclipse实战材料整理
最近在看github上面的项目,发现好多的源码都是maven组织的,但又要去使用maven,因此找资料学习,但是效果很不好,直到昨天晚上看了mooc上面的视频,理清了自己的思路,特将资料列表如下: 视 ...
- cache工作原理
转:http://www.360doc.com/content/11/0307/21/3791508_99049437.shtml
- hadoop源码分析
hadoop 源代码分析(一) Google 的核心竞争技术是它的计算平台.HadoopGoogle的大牛们用了下面5篇文章,介绍了它们的计算设施. GoogleCluster:http://rese ...
- 解决Vim插入模式下backspace按键无法删除字符的问题【转】
本文转载自:https://blog.csdn.net/zxy987872674/article/details/64124959 最近使用某个服务器编辑文件时,快捷键i进入插入模式后,下方不出现in ...
- Python 对象学习一
# 对象的基本理论 # 什么是对象? # 万物皆对象 # 对象是具体物体 # 拥有属性 # 拥有行为 # 把很多零散的东西,封装成为一个整体 # 举例:王二小 # 属性 # 姓名 # 年龄 # 身高 ...
- [UOJ210]寻找罪犯
2-sat神题.. 告诉是2-sat我也完全想不到正解. 看了看题解其实一步步分析也不算很难 这个题首先是要围绕每个人是否是犯人和每句话是否是真话来思考 首先要明确的是: 1.好人不说谎话 2.说了谎 ...