awk的用法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了awk的用法相关的知识,希望对你有一定的参考价值。
参考技术A awk 'pattern action' fileawk:指令名称
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的用法的主要内容,如果未能解决你的问题,请参考以下文章