第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)表示倒数第二列,以此类推。

[root@localhost ~]# awk -F: '{print NF}' /etc/passwd
7
[root@localhost ~]# awk -F: '{print $NF}' /etc/passwd
/bin/bash
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
...........................
[root@localhost ~]# awk -F: '{print $(NF-1)}' /etc/passwd
/root
/bin
/sbin
..............

1.5 【练习题】awk如何使用正则?

12-26 13:08