AWK数组

三世轮回 提交于 2019-12-06 05:27:47

第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如何使用正则?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!