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函数

特性

  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. linux下常用的日志分析命令

    linux下常用的日志分析命令   本文介绍下,在linux中常用的一些分析日志的命令行或脚本,有需要的朋友参考下.     形如下面这样的access.log日志内容: 211.123.23.133 ...

  2. nginx常用运维日志分析命令

    nginx常用日志分析命令 运维人员必备 常用日志分析命令 1.总请求数 wc -l access.log |awk '{print $1}' 2.独立IP数 awk '{print $1}' acc ...

  3. 介绍了Apache日志文件每条数据的请意义以及一些实用日志分析命令

    这篇文章主要介绍了apache日志文件每条数据的请意义,以及一些实用日志分析命令,需要的朋友可以参考下(http://wap.0834jl.com) 一.日志分析 如果apache的安装时采用默认的配 ...

  4. Linux常用的日志分析命令与工具

    >>基础命令 操作 命令 说明 查看文件的内容 cat -n access.log -n显示行号 分页显示文件 more access.log Enter下一行,空格下一页,F下一屏,B上 ...

  5. Linux文本分析命令awk的妙用

    基本用法 awk是一个强大的文本分析工具,简单来说awk就是把文件逐行读入,(空格,制表符)为默认分隔符将每行切片,切开的部分再进行各种分析处理 awk命令格式如下 awk [-F field-sep ...

  6. linux下常用的日志分析命令【转】

    形如下面这样的access.log日志内容: 211.123.23.133 – - [10/Dec/2010:09:31:17 +0800] “GET /query/trendxml/district ...

  7. find命令的基础用法以及按文件修改时间查找文件

    一般文件查找方法: find 命令学好是一件很有趣的事情,也可以帮你在查找系统文件的时候事倍功半,还可以与正则表达式结合使用,功能强大,是一个很好的查找工具.可以整体提高你的系统管理能力. 基础用法 ...

  8. Linux常用基本命令:三剑客命令之-awk基础用法

    awk是一个超级强大的文本格式化处理工具,他与grep, sed命令被成为linux 三剑客命令 三剑客命令的特点: grep:只要用来匹配和查找文本 sed: 编辑匹配到文本 awk: 格式化文本, ...

  9. nginx日志分析命令记录

    这是要注意的 可能因为 线上 nginx日志输出格式的不一样,一下命令未能展示正确的结果 流量速率分析的第三个命令 慢查询分析的第一二个命令 参考文档,nginx日志输出格式为 $remote_add ...

随机推荐

  1. Appium自动化环境搭建(windows+Android)

    开始安装: 1.首先搭建好Android开发环境(eclipse+jdk+android的sdk包+Level17或以上的版本api) 2.设置ANDROID_HOME系统变量为你的Android S ...

  2. Spring 数据库连接池读取系统环境变量作为参数

    原来是写在一个properties文件里面,后来项目要部署的的确太多了,每次更改不太方便,就想把这些固定不变的信息写在当地的环境变量里面 原先是这样的:引用的所有信息在jdbc.properties ...

  3. 什么是web接口

    当我们在请求一个页面的时候,会显示服务器返回的资源,其中包含了HTML.CSS和JS,除此之外,服务器还可以返回图片.视频.字体和插件等类型的资源.这些资源全部由HTTP协议传输. 如果把HTTP协议 ...

  4. HDU1421:搬寝室(线性dp)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1421 又是一道,没有思想的题,看了题解,我发现我的dp题几乎都看了题解,我总是想不好状态转移方程,汗颜,以 ...

  5. sersync的confxml.xml文件详解

    <?xml version="1.0" encoding="ISO-8859-1"?> <head version="2.5&quo ...

  6. Canvas:绘制路径

    Canvas:绘制路径 绘制路径 图形的基本元素是路径.路径是[通过不同颜色和宽度的线段或曲线相连形成的不同形状的]点的集合.一个路径,甚至一个子路径,都是闭合的. 使用路径绘制图形需要一些额外的步骤 ...

  7. javaEE中的字符编码问题

    0 web.xml中注册的CharacterEncodingFilter <!-- 配置字符集过滤器 --> <filter> <filter-name>encod ...

  8. ubuntu下关于profile和bashrc中环境变量的理解

    (0) 写在前面 有些名词可能需要解释一下.(也可以先不看这一节,在后面看到有疑惑再上来看相关解释) $PS1和交互式运行(running interactively): 简单地来说,交互式运行就是在 ...

  9. hadoop16---反射

    框架配置文件中,从字符串获取类和实例,调他的方法. 通过反射的方式可以获取class对象中的属性.方法.构造函数等,一下是实例: package cn.itcast_04_reflect; impor ...

  10. Saltstack 命令参数整理

    命令:salt-key # 测试 命令:salt-key -A # 管理所有minion 命令:salt-key -a # 管理定义minion 命令:salt-key -d ID名字 # 删除单个m ...