shell三剑客之awk

学习的内容来自于Linux Shell脚本攻略(2)

内容只做了简单的记录,方便自己学习

shell 命令查询地址:http://man.linuxde.net/

awk

awk的灵活性十分的高,它是一款用于设计数据流的工具,最方便的操作是对数据的行和列的操作

基本结构如下

awk 'BEGIN {print 'start'} pattern {commands } END{print 'end'} file

工作原理:

1)执行BEGIN{commadns}语句块中的语句

2)从文件或stdin中读取一行,然后执行pattern{commands}。重复这个过程直到文件全部被读取完

  1. 当读至输入流末尾时,执行END{commadns}语块

Begin语句块在awk开始从输入流中读取之前就已经被执行,这是一个可以选择的语块,当我们需要初始化我们的输出内容的时候,就可以选择比如表单的表头

END语句块是在awk从输入流中读取完所有行之后执行的,这也是一个可以选择的语句块

pattern 语句块 默认执行{print} 即打印读取到的每一行

每读取一行,awk就会检查该行和提供的样式是否匹配,如果匹配则执行{}中的语句

1533176791822.png
1533176933033.png

awk的特殊变量

NR:表示记录数量,在执行过程中对应于当前行号

NF:表示字段数量(变量) 在执行过程中对应于当前行的字段数

$0:这个变量包含执行过程中当前行的文本内容

$1:这个变量包含第一个字段的文本内容

$2:这个变量包含第二个字段的文本内容

1533177674441.png

这里可以看他,他会把,左右的字段判断成为一个字段

$NF 表示这一行的最后一个字段 ${NF-1}倒数第二个字段

你可能感兴趣的:(shell三剑客之awk)