回到: Linux系列文章 Shell系列文章 Awk系列文章 awk数据筛选示例 筛选行 # 1.根据行号筛选 awk 'NR==2' a.txt # 筛选出第二行 awk 'NR>=2' a.txt # 输出第2行和之后的行 # 2.根据正则表达式筛选整行 awk '/qq.com/' a.txt # 输出带有qq.com的行 awk '$0 ~ /qq.com/' a.txt # 等价于上面命令 awk '/^[^@]+$/' a.txt # 输出不包含@符号的行 awk '!/@/' a…
精通awk系列文章 我录制了两个awk相关的视频教程: Awk经典实战案例精讲 精通awk精品课程:awk从入门到精通 1.安装新版本的gawk 2.本教程测试所用示例文件 3.铺垫知识:读取文件的几种方式 4.awk用法入门 5.BEGIN和END语句块 6.awk命令行结构和awk语法结构 7.awk读取行的细节 8.awk划分字段的3种方式 9.修改字段或NF引起的$0重新计算 10.awk筛选行和处理字段的示例 11.awk的工作流程 12.awk getline用法详解 13.awk…
回到: Linux系列文章 Shell系列文章 Awk系列文章 awk命令行结构和语法结构 awk命令行结构 awk [ -- ] program-text file ... (1) awk -f program-file [ -- ] file ... (2) awk -e program-text [ -- ] file ... (3) 其中: awk语法结构 awk语法结构即awk代码部分的结构. awk的语法充斥着pattern{action}的模式,它们称为awk rule. 例如:…
回到: Linux系列文章 Shell系列文章 Awk系列文章 awk用法入门 awk 'awk_program' a.txt awk示例: # 输出a.txt中的每一行 awk '{print $0}' a.txt # 多个代码块,代码块中多个语句 # 输出每行之后还输出两行:hello行和world行 awk '{print $0}{print "hello";print "world"}' a.txt 对于awk '{print $0}' a.txt,它类似于…
回到: Linux系列文章 Shell系列文章 Awk系列文章 awk变量 awk的变量是动态变量,在使用时声明. 所以awk变量有3种状态: 未声明状态:称为untyped类型 引用过但未赋值状态:unassigned类型 已赋值状态 引用未赋值的变量,其默认初始值为空字符串或数值0. 在awk中未声明的变量称为untyped,声明了但未赋值(只要引用了就声明了)的变量其类型为unassigned. gawk 4.2版提供了typeof()函数,可以测试变量的数据类型,包括测试变量是否声明.…
回到: Linux系列文章 Shell系列文章 Awk系列文章 awk工作流程 参考自:man awk的"AWK PROGRAM EXECUTION"段. man --pager='less -p ^"AWK PROGRAM EXECUTION"' awk 执行步骤:…
安装新版本gawk awk有很多种版本,例如nawk.gawk.gawk是GNU awk,它的功能很丰富. 本教程采用的是gawk 4.2.0版本,4.2.0版本的gawk是一个比较大的改版,新支持的一些特性非常好用,而在低于4.2.0版本时这些语法可能会报错.所以,请先安装4.2.0版本或更高版本的gawk. 查看awk版本 [root@localhost ~]# awk --version GNU Awk Copyright (C) , - Free Software Foundation.…
回到: Linux系列文章 Shell系列文章 Awk系列文章 详细分析awk字段分割 awk读取每一条记录之后,会将其赋值给$0,同时还会对这条记录按照预定义变量FS划分字段,将划分好的各个字段分别赋值给$1 $2 $3 $4...$N,同时将划分的字段数量赋值给预定义变量NF. 引用字段的方式 $N引用字段: N=0:即$0,引用记录本身 0<N<=NF:引用对应字段 N>NF:表示引用不存在的字段,返回空字符串 N<0:报错 可使用变量或计算的方式指定要获取的字段序号. aw…
回到: Linux系列文章 Shell系列文章 Awk系列文章 修改字段或NF值的联动效应 注意下面的分割和计算两词:分割表示使用FS(field Separator),计算表示使用预定义变量OFS(Output Field Separator). 修改$0,将使用FS重新分割字段,所以会影响$1.$2... 修改$1.$2,将根据$1到$NF等各字段来重新计算$0 即使是$1 = $1这样的原值不变的修改,也一样会重新计算$0 为不存在的字段赋值,将新增字段并按需使用空字符串填充中间的字段,并…
回到: Linux系列文章 Shell系列文章 Awk系列文章 本系列的awk教程中,将大量使用到如下示例文件a.txt. ID name gender age email phone 1 Bob male 28 abc@qq.com 18023394012 2 Alice female 24 def@gmail.com 18084925203 3 Tony male 21 aaa@163.com 17048792503 4 Kevin male 21 bbb@189.com 170239290…