awk命名基础解析
前言
awk会将传递过来的数据按照一个整体处理的
awk主要有三模块组成:(可以按照junit测试来理解.)
BEGIN{}:开始执行前的准备阶段,可以理解为初始化
PATTERN{}:操作命令
END{}:操作结束后的处理,收尾工作.
- 样式
awk 'BEGIN{}{}END{}'
由此我们可以想到: 在BEGIN阶段用于指定按照什么分割传入过来的一行数据.
不多BB直接上案例
- example
# 按照","分割 打印出第一列数据(下标从1开始) awk 'BEGIN{FS=","}{print $1}' # 等价写法 awk -F, '{print $1}' # 关于\t,就有了一些区别 # 想如下这样写法 awk -F\t '{print $1}' # 这里的\他是识别不到的,直接把他理解成了t # 即:在他的理解里,当前是按照"t"为分割付进行处理的 # auther: tzkTangXS # 那么就有两种处理办法 # 1.在加上一个反斜杠"\"将这个原来的"\"转义一下,转义成"\" awk -F\\t '{print $1}' # 2.第二种写法: 使用''号 awk -F '\t' '{print $1}' # 讲到了'',那么有一个点就可以提一下: # 多分割付操作.不多BB,看例题 awk -F '[ a]' '{print $1}' tzkTest # 这句话的意识就是: # 读取tzkTest里的数据.首先按照空格来切割. # 再然后按照a类切割 # 最后输出第一列 # exmaple # 假如tzkTest里的数据是如下形式(按\t分割): # wo heng hao heng shuai # wo ui ni lk gs awk -F '[\te]' '{print $2}' # terimal h ui awk -F '[\te]' '{print $3}' # terimal ng ni
常用参数解释
- NR行数(官方语言)一以读出的记录数目
- NF这一行的列数(字段数目)(官方语言)一条记录的字段数目
- FS指定分隔符
- $n指定第几列(字段)