dcore:awk:一个强大的文本分析工具

智聪说说网
智聪说说网
智聪说说网
43262
文章
0
评论
2023-02-0506:29:09 评论 10

  是流式编辑器,针对文档中的行来操作,一行一行地执行。可以非常方便、高效地操作文档以及字符,从而实现我们想要的格式。它的功能非常强大,我在 shell 脚本中经常使用它来处理字符串。下面介绍几个在工作中使用较频繁的用法。

  示例命令如下:

  本例中,选项的作用是指定分隔符。如果不加选项,则以空格或者为分隔符。为打印的动作,用来打印某个字段。为第 1 个字段,为第 2 个字段,以此类推。但比较特殊,它表示整行:

  注意 的格式,后面紧跟单引号,单引号里面为分隔符。的动作要用括起来,否则会报错。还可以打印自定义的内容,但是自定义的内容要用双引号括起来,如下所示:

  在文档中过滤出包含指定字符串的行,示例命令如下:

  这跟 的用法类似,能实现的功能,但没有颜色显示,肯定没有用起来方便。不过还有比更强大的匹配,如下所示:

  它可以让某个段去匹配,这里的~就是匹配的意思。

  此外,还可以多次匹配,如下所示:

  本例中,匹配完,再匹配,并且只打印所匹配的段。

  有时候,在匹配字符的同时要给出限定条件,比如第 3 段为 。示例命令如下:

  在 中,我们可以用逻辑符号进行判断,比如就是等于,也可以理解为精确匹配。另外,还有、、等。值得注意的是,在和数字比较时,若把要比较的数字用双引号引起来,那么 awk 不会将其认为是数字,而会认为是字符,不加双引号就会认为是数字。示例命令如下:

  本例中,阿铭本想把 uid 大于等于 500 的行打印出来,但是结果并不理想。这是因为 把所有的数字都当作字符了,就跟上一章中提到的排序原理一样。但是,如果不加双引号,就得到了想要的结果:

  上例中,表示不匹配,它除了针对某一个段的字符进行逻辑比较外,还可以在两个段之间进行逻辑比较。如下所示:

  另外,还可以使用 和,它们分别表示“并且”和“或者”。的用法如下:

  的用法如下:

  常用的变量有、和。和选项有类似的功能,也是用来定义分隔符的,但是它是在输出的时候定义的。表示用分隔符分隔后一共有多少段。表示行号。

  的用法示例如下:

  还有更高级一些的用法:

  变量 的具体用法如下:

抖音全业务自助在线下单平台,快手1元1000赞在线网站 - 快手点赞1元10000个赞

  这里 是多少段,是最后一段的值。变量的具体用法如下:

  我们还可以使用 作为判断条件,如下所示:

  也可以配合段匹配一起使用,如下所示:

  可以更改段值,示例命令如下:

  也可以对各个段的值进行数学运算,示例命令如下:

  还可以计算某个段的总和,示例命令如下:

  这里的 是特有的语法,表示所有的行都已经执行。如下所示:

  其实 可以写成一个脚本文件,而且有它特有的语法。在中使用判断、循环都可以,只是在日常管理工作中,使用那么复杂的语句并不常见。

  最后,我们再附上常见正则字符的解释。

  表示任意一个字符,比如空格、特殊符号等。

  表示前面的字符有 0 个或多个,比如那就是 0 个或者多个。

  表示任意个任意字符,就是贪婪匹配了。

  就是前面的字符有 1 个或者多个,如就是、、……

  就是前面的字符有 1 个或者 0 个。

  里面是一个范围,如就是前面的字符有 1~5 个。

  表示或者,如就是或者。

  表示这里面的任意一个字符,如就是或者或者。此外,也可以用范围表示任意一个数字,用表示任意一个小写字母。

  表示开头。

  表示结尾。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时候联系我们修改或删除,多谢。

标签:dcore:awk:一个强大的文本分析工具

智聪说说网
  • 本文由 发表于 2023-02-0506:29:09
  • 转载请务必保留本文链接:https://www.zhicongwang.com/101131.html