01 2021 档案
摘要:简介 ARGC和ARGV都是awk的预定义变量。 ARGC存储了awk的CLI参数数量(Argument Count);ARGV(Argument Value)是一个数组变量,虽然是关联数组不过其下标是从0开始的数值(当然,内部识别为字符串),存储了这次awk的CLI执行中的每个参数。 # awk
阅读全文
摘要:数组 在bash中我们已经见识过了数组。awk的数组和bash的数组的主要区别在于其支持的是关联数组,而bash支持的是数值索引数组。 假设存在这样一个数组。 arr=["zhangsan","lisi","wangwu"] 数值索引的下标是从0开始的数值。 arr[0] ==> "zhangsan
阅读全文
摘要:语法 变量 我觉得awk应该算是属于动态编程语言。其变量不需要事先声明才可以使用。我们想要使用的时候随时引用即可,不需要事先声明其数据类型。 awk的变量具有三种状态。 未声明状态(untyped)。没有引用也没有赋值。 未赋值状态(unassigned)。引用但还未赋值。 已赋值状态。 引用未赋值
阅读全文
摘要:输出操作 awk可以通过print或者printf将数据输出到标准输出或者重定向到文件中。 print print我们已经使用过很多次了。其实它本质是一个输出函数,即有小括号。 print (elem1,elem2,elem3...) print elem1,elem2,elem3... 输出的每一
阅读全文
摘要:getline用法详解 在默认情况下,awk支持从文件或者STDIN中读取数据。我们也可以使用getline来灵活读取数据,例如在main代码块执行过程中读取某个非待处理文件的数据,或者从某个读取某个shell命令结果数据。 getline有返回值: 1:正确读取到了数据。 0:读取数据遇到EOF。
阅读全文
摘要:工作流程 可以参考man手册。 man --pager='less -p ^"AWK PROGRAM EXECUTION"' awk 示例 awk -v a=1 -v b=2 'BEGIN{...}{...main...}END{...}' x=3 a.txt y=4 b.txt z=5 解析CLI
阅读全文
摘要:读取文件 读取“每行”数据 博客的开头我们说过,默认情况下awk读取文件的每行数据并将其存入$0变量当中。其实,awk在读取数据之前会根据其内部的预定义变量RS的值来分隔每条记录(record)。RS的默认值是“\n”,即换行符,因此也就会有我们刚才所说的默认情况。 所以,awk在读取文件时,会根据
阅读全文
摘要:命令行和语法结构 awk [ options ] [ -- ] program-text file ... options即选项;program-text即awk代码;file ...即待处理的读入数据,可以是文件也可以是标准输入,只要是数据来源即可。 这里比较陌生的是[ -- ],中括号表示可以省
阅读全文
摘要:本博文参考的资料来自于骏马金龙的awk教程,该教程在51CTO上也有对应的课程,欢迎大家付费支持。本博文默认读者已经具备了正则表达式基础。 前言 本博客中使用的示例文件a.txt内容如下。 ID name gender age email phone 1 Bob male 28 abc@qq.com
阅读全文