第1章 awk命令基础
1.1 awk命令执行过程
1、如果BEGIN 区块存在,awk执行它指定的动作。
2、awk从输入文件中读取一行,称为一条输入记录。如果输入文件省略,将从标准输入读取
3、awk将读入的记录分割成字段,将第1个字段放入变量$1中,第2个字段放入$2,以此类推。$0表示整条记录。字段分隔符使用shell环境变量FS或由参数指定。
4、把当前输入记录(数据行)依次与每一个awk命令中awk条件比较,看是否匹配,如果相匹配,就执行对应的动作。如果不匹配,就跳过对应的动作,直到比较完所有的awk命令。
5、当一条输入记录比较了所有的awk命令后,awk读取输入的下一行,继续重复步骤3和4,这个过程一直持续,直到awk读取到文件尾。
6、当awk读完所有的输入行后,如果存在END,就执行相应的动作。
1.2 awk中模式与动作
'pattern{action}'
1.2.1 在awk眼中的行与列
field 字段,列
record 记录,行
1.3 awk默认有一把“菜刀”
空格系列 (单独的空格,连续的空格,tab键)
-F 指定分隔符
-vFS
FS == field sep 每一列的分隔符
OFS ==output field sep 输出每一列的时候使用的分隔符
1.4 awk的内置变量
变量 |
含义 |
英文全写 |
FS |
每一列的分隔符 |
field sep |
NF |
每一行有多少列 |
number of field |
OFS |
输出每一列的时候使用的分隔符 |
output field sep |
NR |
记录号 行号 |
number of record |
RS |
每一行的分隔符(每一行的结束标记) |
|
$数字 |
取某一列 |
|
$0 |
取出这一行 |
|
1.4.1 $NF的使用
$NF 表示最后一列,(NF-1)表示倒数第二列,以此类推。