awk的用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了awk的用法相关的知识,希望对你有一定的参考价值。

参考技术A awk 'pattern action' file

awk:指令名称

pattern:过滤器

action:动作

pattern是过滤器,在逐行处理的过程中,可以使用过滤器过滤掉不需要的行,或者过滤出需要的行。而过滤器可以有以下几种方式:

使用正则表达式来过滤,将要过滤的内容放在 / /中。

比如,过滤包含hello行:

==(相等)、 ~ (包含)、! ~ (不包含)、&&(且)、||(或)

示例:

test.txt内容如下:

过滤第一个字段等于“hello”的行

过滤出第一个字段包含“hello”的行

过滤出第一个字段不包含“hello”的行

过滤出包含“hello”且包含“world”的行

过滤出包含“hello”或者包含“meituan”的行

由两个pattern组成,begpat和endpat,中间使用逗号(,)分割,begpat表示匹配的开始位置,endpat表示匹配的结束位置

示例

test1.txt内容如下:

过滤出第一个字段是“hello” 到 “baidu”的行

使用语法是 awk 'BEGINENDaction',指定 initialization 和 cleanup 规则。

示例

test2.txt内容如下:

求最大值

类似2.4,只不过是规则更复杂

匹配所有行,不过滤任何内容

test.txt内容如下:

打印test.txt的内容

FS:分隔符,默认空格

NR:当前行

NF:当前记录字段个数

$0:当前记录

$0 ~ n:当前记录中的第n个字段

示例

test3.txt内容:

打印每行每个字段用#连接起来

打印第2 ~ 第5行的内容

打印第2 ~ 第5行的内容最后一个字段

gsub(s,r): 在$0中,使用r代替s

index(s,t): 返回s中t的第一个位置

length(s) :s的长度

match(s,r) :s是否匹配r

substr(s,p) :返回s中从p开始的子串

https://www.gnu.org/software/gawk/manual/html_node/Patterns-and-Actions.html#Patterns-and-Actions

awk用法

awk牛批嘛? 方便嘛? 你了解嘛? 来看看吧

如果有一个大文件你要取出文件当中的某一列,或者某一个值,怎么取呢?

文件:test.txt
算出你想取出的列$x 执行如下命令 输出到一个新的文件
cat test.txt | awk "{print $x}" > newfile.txt

需要计算某个字段的和呢? 算出平响?

求和:cat test.txt | awk "{sum += $x} END {print sum}"

算出平响:cat test.txt | awk "{sum += $x} END {print \'sum = \' sum; print \'average = \' sum/NR }"

后续继续学习~~~

以上是关于awk的用法的主要内容,如果未能解决你的问题,请参考以下文章

awk 的一些用法

awk的用法

awk用法

awk的基本概念,基础用法和高级用法

awk用法

awk用法