Linux awk学习

awk是Linux三剑客之一,在我们处理文件等方面还是特别方便的

介绍

我们先来说一说awk是用来干什么的,awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

我们可以先来看一下awk的版本号

用法

awk命令是由模式和动作的组合组成的

awk [options] 'pattern {action}' file

模式,pattern,可以理解为sed的模式匹配,可以由表达式组成,也可以是两个正斜杠之间的正则表达式。

动作,action,是由在大括号里面的一条或多条语句组成,语句之间使用分号隔开。

通俗来说pattern就是找谁,action就是干啥

awk处理的内容可以来自标准输入(<),一个或多个文本文件或管道

实践

我们先准备一个文件来用来进行后面的测试

我们先用一个语句来说一下awk的运作方式

awk是通过一行一行来处理文件的,上面这条语句执行的过程就是:

1.awk读入一行内容

2.判断是否符合模式中的条件(NR>=2),如果匹配到则执行对应的动作({print $0}),如果没有匹配到,继续读取下一行

3.继续读取下一行

4.重复1-3,直到读取到最后一行

其中的$0实际上是awk的内置变量,代表的是当前一整行记录,awk的内置变量有很多,我们这里举出其中的几个来进行说明,可以借用这些内容来进行各种方式的分割操作

为了更方便的了解,画一个图就很清楚了

接下来再举一些例子来说明

使用NR控制了只要2-5行的内容,使用冒号进行分割,然后输出第一段和第三段的内容,上面对比一下就很清楚了

上面是使用冒号进行分割是在一行进行分割的,也是支持在多行进行分割的,awk对每个要处理的输入数据认为都是具有格式和结构的,而不是一堆字符串,默认情况下,每一行内容都是一条记录,并且以换行符结尾,我们可以用整行来进行输出

如果想要以冒号来分割并进行换行的话,可以这样操作

这里再解释一下那个BEGIN是做什么的

BEGIN{}: 读入第一行文本之前执行的语句,一般用来初始化操作{}: 逐行处理END{}: 处理完最后以行文本后执行,一般用来处理输出结果

接下来再说一下正则表达式的应用

比如我们来匹配一下以字符u开头的整行记录

也可以对其进行指定区域的匹配,匹配第三个区域开头是字符u的记录

本文分享自微信公众号 - 无心的梦呓(wuxinmengyi)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Ubuntu19安装MySQL的坑

    这里安装的话,默认安装的是MySQL5.7的,但是由于兼容性问题,Ubuntu19已经不支持其运行了,包括Ubuntu18也是不支持的。

    无心的梦呓
  • Linux用户管理学习

    skel目录是用来存放新用户配置文件的目录,当添加新用户的时候,会自动将这个目录下的所有文件复制到新用户的家目录下,可以通过修改skel目录下的文件来对新用户初...

    无心的梦呓
  • 算法之二分查找(上)

    二分查找在平时的生活中也挺常用的,比如说以前玩的猜数游戏,每次都取中间数,然后得知是大了,还是小了,这个例子也就是二分查找。

    无心的梦呓
  • Linux强大的awk(一)

    最近在公司遇一个需求,要从上个月甚至是半年的日志文件中筛选出用户首次访问站点,是通过什么入口跳转进来的,访问的资源有哪些等等一些信息,无奈日志实在太大,需要经过...

    wade
  • awk——强大的文本分析工具

    awk是一个强大的文本分析工具,awk把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

    TeamsSix
  • Linux三大剑客之awk

    版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢

    耕耘实录
  • awk第二课

    使用方法:awk ‘{pattern + action}’ {filenames} 尽管操作可能会很复杂,但语法总是这样,其中 pattern 表示 AWK 在...

    苦咖啡
  • AWK中的字段,记录和变量【Programming】

    本文为awk入门系列的第二篇文章,在本篇文章中,你可以了解到有关字段,记录和一些功能强大的awk变量。

    Potato
  • awk学习笔记

    awk是一种模式扫描和处理工具,相对于grep的查找,sed的编辑,它在对数据进行分析生成报表时显得尤为强大。awk通过逐行遍历一个或多个 文件的方式,查找模...

    小小科
  • Linux命令(36)——awk命令

    AWK是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输...

    Dabelv

扫码关注云+社区

领取腾讯云代金券