性能测试日志分析之awk基础用法

转发自:微信公众号“测试那点事儿 ”的文章

我们做性能测试的时候要进行一些日志分析,最简单的可以用awk命令进行分析。

awk

awk是一个很好用的文本处理工具,相对于sed常用用作一整行的处理,awk则比较擅长将一行分成数个字段来处理。而在我们性能测试中,可以awk可以帮助我们造数,也可以帮助我们分析日志。

简单来说,awk就是用一个循环实现的。首先awk读取文本的一行(默认是从第一行开始,当然也可以根据条件选择行),然后根据你给的条件来处理这行的某个字段;处理完成后,再读取下一行,然后再根据条件去处理字段,直到处理完成所有的行。

awk的标准格式

awk ‘条件类型1{动作1} 条件类型2{动作2}.......‘

awk常用的内置变量

NR:现在处理的是第几行数据

NF:每行一共的字段数

$0:代表一整行数据

$1:代表第一个字段,以此类推

RS 输入行分隔符(默认为回车)

ORS 输出行分隔符(默认为回车)

FS 字段分隔符(默认为空格)

-F  指定多个字段分隔符并且支持正则表达式(比FS更加强大一些)

OFS 输出字段分隔符(默认为空格)

格式化输出

print函数

特性

  1. 参数可以是变量、计算值、或字符串常量
  2. 字符串必须用双引号括起来
  3. 参数之间用逗号分隔(输出分隔符由变量OFS决定)
  4. 输出可以被重定向
  5. 输出和输入之间可以通过管道

printf函数

特性

  1. 返回给标准输出一个带有格式的字符串
  2. 不会在行尾自动换行
  3. 包含一个加引号的字符串

修饰符

  1. “-” 左对齐
  2. #         八进制加0 十六进制加0x
  3. +         加上正负号+或-
  4. 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 ‘条件类型1{动作1} 条件类型2{动作2}.......‘

时间: 2024-10-08 19:19:11

性能测试日志分析之awk基础用法的相关文章

日志分析命令awk基础用法

awk awk是一个很好用的文本处理工具,相对于sed常用用作一整行的处理,awk则比较擅长将一行分成数个字段来处理.而在我们性能测试中,可以awk可以帮助我们造数,也可以帮助我们分析日志. 简单来说,awk就是用一个循环实现的.首先awk读取文本的一行(默认是从第一行开始,淡然也可以根据条件选择行),然后根据你给的条件来处理这行的某个字段:处理完成后,再读取下一行,然后再根据条件去处理字段,直到处理完成所有的行. awk的标准格式 awk '条件类型1{动作1} 条件类型2{动作2}.....

awk基础用法

awk是神通广大的工具,不学一下的话,shell脚本写起来真的好艰难... awk有很多不同的版本,这里采用的是gawk(依我看,功能都差不多),它用来检索一些文件,从中找出匹配指定模式的行,然后在这些行上执行指定的动作. 基本格式如下: gwak options 'pattern {action}' file-list 其中,file-list是gawk的数据来源:options是一些特定的选项:主要部分"模式+动作"必须要放在单引号内,而且动作还要用花括号括起来.主要部分如果太多的

文本处理工具awk基础用法

sed是以行为单位的文本处理工具,awk则以列为单位. 文件都是结构化的,都是有单词和空白字符组成的. 空白字符包括空格.tab以及连续的空格和tab.每个非空白部分叫做域, $0表示 全部域, $1表示第1个域等等-- 默认以空白字符为分隔符,打印前两列 [email protected]:~/templates$ cat data.txt a.wang Male 30 021-11111111 b.yang Female 25 021-22222222 c.liu Male 33 021-3

awk程序设计语言之-awk基础

awk程序设计语言之-awk基础 1 http://man.linuxde.net/ 2 7 8 常用工具命令之awk命令 9 awk是一种编程语言,用于在Linux/Unix下对文本和数据处理.数据可以来自标准输入(stdin).一个或多个文件,或其他命令的输出.它支持用户自定义函数和动态正则表达式 10 等先进功能,是Linux/unix下的一个强大编程工具.它在命令行中使用,但更多是作为脚本来使用,awk有很多内建功能,比如数组.函数等,这是它和c语言的相同之处,灵活性 11 是awk最大

awk基础知识小结(1)

1.使用规则 awk 适合于文本处理和报表生成,它还有许多精心设计的特性,允许进行需要特殊技巧程序设计. awk  的语法较为常见.它借鉴了某些语言的一些精华部分,如C 语言.python 和 bash. 第一个 awk 让我们继续,开始使用 awk,以了解其工作原理.在命令行中输入以下命令: $ awk '{ print }'  /etc/passwd 您将会见到 /etc/passwd 文件的内容出现在眼前.现在,解释 awk 做了些什么.调用 awk 时,我们指定  /etc/passwd

Linux sed 和 awk的用法

sed用法: 原文链接:http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为:         sed [-nefri] 'command' 输入文本 常用选项:        -n∶使用安静(silent)模式.在一般 sed 的用法中,所有来自

19.1 awk基础【第十九章 awk】

第十九章 awk 19.1 awk基础 本博文目录索引 [TOC] 一.初识awk (一)什么是awk? awk,全称:Aho Weinberger Kernighan 是一个报告生成器,用于格式化文本输出 (二)awk能做什么? 1.主要功能:格式化显示文档.或者打印报表 2.将给定的文本内容按照工程师想要的格式输出显示.或者打印成报表格式 3.日常用途:处理各种文档(比如日志信息),从中分析挖掘出工程师关心的必要数据,并且打印成报表 (三)CentOS7系统中的awk 1.gawk 在Cen

日志分析-1.rsyslog 基础配置(服务器/客户端)

日志分析-1.rsyslog 基础配置(服务器/客户端)centos6起/etc/syslog.conf不再有!而是/etc/rsyslog.conf代替!rsyslog是syslog的多线程增强版,现在Fedora.Ubuntu,.rhel6.centos6默认的日志系统都是rsyslog了.rsyslog主要用来收集系统产生的各种日志,日志默认放在/var/log/目录下.日志收集工具,不仅仅可以收集本机的日志,还可以收集其他机器的日志 在客户端/服务器架构的配置下,rsyslog同时扮演了

最大化 AIX 上的 Java 性能,第 1 部分: 基础

http://www.ibm.com/developerworks/cn/aix/library/es-Javaperf/es-Javaperf1.html 最大化 AIX 上的 Java 性能,第 1 部分: 基础 这个由五个部分组成的系列提供了若干技巧和技术,这些技巧和技术通常用于优化 Java™ 应用程序,以便在 AIX® 上实现最佳的性能.其中还提供了有关每个技巧的适用性讨论.使用这些技巧,您应该能够快速优化 Java 环境,以适合应用程序的需要. 引言 存在若干可用于运行 AIX 的