shell中的awk报告生成器

awk报告生成器(重要)

1.awk处理机制:awk会逐行处理文本,支持在处理第一行之前做一些准备工作,以及在处理完最后一行最一些总结性质的工作,在命令格式上分别体现如下:
BEGIN{}:读入第一行文本之前执行,一般用来初始化操作
{}:逐行处理,逐行读入文本执行相应的处理,是最常见的编辑指令
END{}:处理完最后一行文本后执行,一般用来输出处理结果
2.awk基本用法
linux上面默认使用gawk
awk ‘{print FILENAME}’ passwd
awk ‘{print 第"NR"行,有“NF”列}’
awk ‘BEGIM{print NAME}’
awk ‘END{print WESTOS}’
awk -F : ‘BEGIN{print NAME}{printKaTeX parse error: Expected 'EOF', got '}' at position 2: 1}̲END{WESTOS}' aw…/’
awk -F : '/bash$/{print$1}'

实验1:
<1>前提条件:

[root@localhost mnt]# cp /etc/passwd .
[root@localhost mnt]# vim passwd	##适当减少了内容,为了结果更加直观

在这里插入图片描述
<2>初始化操作,使其在最先开始的时候输入“hello”

[root@localhost mnt]# awk -F : 'BEGIN{print "hello"}'

在这里插入图片描述
<3>输出passwd文件中的每一行的第一个字符,且在最先开始的时候输出“hello”,在在结束的时候输出“end”

[root@localhost mnt]# awk -F : 'BEGIN{print "hello"}{print $1}END{print"end"}' passwd

在这里插入图片描述
<4>输出文件名(因为每一行的文件名都是passwd,所以每行都输出passwd)

[root@localhost mnt]# awk -F : '{print FILENAME}' passwd

在这里插入图片描述
<5>输出passwd文件每一行的行号

[root@localhost mnt]# awk -F : '{print NR}' passwd

在这里插入图片描述
<6>输出passwd文件每一行的列数

[root@localhost mnt]# awk -F : '{print NF}' passwd

在这里插入图片描述
<7>输出passwd文件中每一行的第一列内容

[root@localhost mnt]# awk -F : '{print $1}' passwd

在这里插入图片描述
<8>输出passwd文件中以bash结尾的行,并只输出该行的第一列内容

[root@localhost mnt]# awk -F : '/bash$/{print $1}' passwd

在这里插入图片描述
<9>输出passwd文件中不以bash结尾的行,并只输出该行的第一列内容

[root@localhost mnt]# awk -F : '!/bash$/{print $1}' passwd

在这里插入图片描述
<10>练习:
输出passwd文件中用户可以登陆成功的个数

[root@localhost mnt]# awk 'BEGIN{N=0}/bash$/{N++}END{print N}' passwd

在这里插入图片描述

注意:
1.如果不写空格符,默认的是空格
2.指定分隔符后的第一段$1,第二段$2
3.awk是逐行处理,每一行处理一次
4.不加引号,默认的的是执行的动作
5.-F :表示每行的内容以“:”为分隔符

实验2:
<1>当N=100时,N+50=?

[root@desktop mnt]# awk 'BEGIN{N=100;print N+50}'

在这里插入图片描述
<2>输出passwd文件中每行中有a-d中任意一个字符的行

[root@desktop mnt]# awk '/[a-d]/{print}' passwd

在这里插入图片描述
<3>输出passwd文件中以a-d中任意一个字符开头的行

[root@desktop mnt]# awk '/^[a-d]/{print}' passwd

在这里插入图片描述
<4>输出passwd文件中除了a-d中任意一个字符开头的行

[root@desktop mnt]# awk '!/^[a-d]/{print}' passwd

在这里插入图片描述
<5>输出passwd文件中除了a-d中任意一个字符开头的行

[root@desktop mnt]# awk '/^[^a-d]/{print}' passwd

在这里插入图片描述
<6>输出passwd文件中不以a-d中任意一个字符开头的行

[root@desktop mnt]# awk '/^[!a-d]/{print}' passwd

在这里插入图片描述
<7>输出passwd文件中以a-d中任意一个字符开头的行

[root@desktop mnt]# awk '/^a|bash$/{print}' passwd

在这里插入图片描述
<8>输出passwd文件中以a字符开头和或者以bash结尾的行

[root@desktop mnt]# awk '!/^a|bash$/{print}' passwd

在这里插入图片描述
<9>输出passwd文件中第六列是bin结尾的行

[root@desktop mnt]# awk -F : '$6~/\<bin$/' passwd

在这里插入图片描述
<10>输出passwd文件中第六列不是bin结尾的行

[root@desktop mnt]# awk -F : '$6!~/\<bin$/' passwd

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_39376481/article/details/88749807
今日推荐