Shell 文本分析 awk简介

awk命令是强大的文本分析工具,还具有强大统计功能。

这里做最简要的介绍。


1 语法

awk '条件1 {动作 1} 条件 2 {动作 2} …条件n{动作n}' 文件名

1)首先对文件进行分行分段处理

2)对分行分段后的数据进行条件判断与动作处理:

如果是begin条件,其它动作开始之前执行1次;

如果是end条件,其它动作结束之后执行1次;

其它条件,每1行会执行1次。


条件类型

主要包括3种:begin、end、无名。


分段变量

$1表示该行的第1列,$2表示该行的第2列,以此类推。$0表示整个行。


2 示例

例1:针对用户密码表,通过awk进行遍历,

文件user_pwd.txt

user1  111111
user2  222222
user3  333333
user4  444444
user5  555555
user6  666666

代码

awk '{print "name:"$1",password:"$2} ' user_pwd.txt

输出需通过awk的内部函数print

字符串连接:常量用双引号,变量直接写。

img


例2:针对用户密码表,通过awk进行遍历,并统计用户个数,

代码

awk 'BEGIN{print "begin";count=0;}{print "name:$1,password:$2";let count++}END{print count;print "end"}' user_pwd.txt

一行代码里面内容有点多。

img


例3:字符串截取

echo "12345678" | awk '{print substr($1,2,4)}'

awk支持管道;

awk内置函数substr用于截取字符串,参数说明:

第1个参数表示字符串;

第2个参数表示开始位置;

第3个参数表示截取长度。

img