首页 » 技术分享 » awk详解 数组

awk详解 数组

 

第1章 awk命令基础

1.1 awk命令执行过程

1、如果BEGIN 区块存在,awk执行它指定的动作

2awk从输入文件中读取一行,称为一条输入记录。如果输入文件省略,将从标准输入读取

3awk将读入的记录分割成字段,将第1个字段放入变量$1中,第2个字段放入$2,以此类推。$0表示整条记录。字段分隔符使用shell环境变量FS或由参数指定。

4、把当前输入记录(数据行)依次与每一个awk命令中awk条件比较,看是否匹配,如果相匹配,就执行对应的动作。如果不匹配,就跳过对应的动作,直到比较完所有的awk命令。

5、当一条输入记录比较了所有的awk命令后,awk读取输入的下一行,继续重复步骤34,这个过程一直持续,直到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@znix ~]# awk -F: '{print NF}' passwd.txt

7

7

……

[root@znix ~]# awk -F: '{print $NF}' passwd.txt

/bin/bash

/sbin/nologin

/sbin/nologin

[root@znix ~]# awk -F: '{print $(NF-1)}' passwd.txt

/root

/bin

/sbin

转载自原文链接, 如需删除请联系管理员。

原文链接:awk详解 数组,转载请注明来源!

0