linux——awk报告生成器

awk报告生成器

awk处理机制:awk会逐行处理文本,支持在处理第一行之间做一些准备工作,以及在处理万最后一行*做一些总结性质的工作,在命令个和四上分别体现如下:
                   BEGIN{}:读如第一行文本之前执行,一般用来初始化操作
                  {}:逐行处理,逐行读如文本执行相应的处理,是最常见的编辑指令块
                  END{}:处理完最后以行文本的执行,一般用来输出处理结果

awk基本用法一:

1.awk -F “:” ‘BEGIN{print NAME}{print $1}’ /etc/passwd 
//以:为分隔符,处理前打印NAME,打印第一行 
2.awk -F “:” ‘BEGIN{print NAME}{print $1}END{print NR}’ /etc/passwd 
//以:为分隔符,处理打印前NAME,打印第一行,处理后打印行数 
3.awk -F ":" 'BEGIN{print "name" }{print$1}END{print NF}' passwd
//以:为分隔符,处理前打印NAME,打印列数
4.awk -F “:” ‘/bash$/’ /etc/passwd 
//以:为分隔符打印以bash结尾的行 
5.awk -F “:” ‘/bash$/{print $5}’ /etc/passwd 
以:为分隔符,打印以bash结尾的第56.awk -F “:” ‘NR==3’ /etc/passwd 
//以:为分隔符,打印第三行 
7.awk -F “:” ‘BEGIN{print NAME}NR<=3&&NR>=2{print $1}’ /etc/passwd 
//以:为分隔符,处理前打印NAME,打印2-3行每行的第一个字符
8.awk -F ":" 'BEGIN{N=0}/bash$/{N++}END{print N}' passwd
 //利用N变量统计以bash结尾的行,每找到一行,N加一,最后输出N的个数
实验:
[root@client mnt]# cat passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
user3:x:1003:1003::/home/user3:/bin/bash
[root@client mnt]# awk -F ":" '{print $1}' passwd   
//指定“:”为分隔符,输出第一列。
root
bin
mysql
user1
user2
user3
[root@client mnt]# awk -F ":" 'BEGIN{print "name" }{print$1}' passwd 
//以:为分隔符,处理前打印NAME,打印第一行 
name
root
bin
mysql
user1
user2
user3
[root@client mnt]# awk -F ":" 'BEGIN{print "name" }{print$1}END{print "END"}' passwd 
//以:为分隔符,处理打印前NAME,打印第一行,处理后打印END
name
root
bin
mysql
user1
user2
user3
END
[root@client mnt]# awk -F ":" 'BEGIN{print "name" }{print$1}END{print NR}' passwd 
//以:为分隔符,处理打印前NAME,打印第一行,处理后打印行数 

name
root
bin
mysql
user1
user2
user3
6
[root@client mnt]# awk -F ":" 'BEGIN{print "name" }{print$1}END{print NF}' passwd 
//以:为分隔符,处理打印前NAME,打印第一行,处理后打印列数 
name
root
bin
mysql
user1
user2
user3
7
[root@client mnt]# awk -F ":" 'BEGIN{print "name" }NR<=3&&NR>=2{print$1}' passwd name
 //以:为分隔符,处理前打印NAME,打印2-3行每行的第一个字符

bin
mysql

[root@client mnt]# cat passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
user3:x:1003:1003::/home/user3:/bin/bash
[root@client mnt]# awk -F ":" 'BEGIN{N=0}/bash$/{N++}END{print N}' passwd 
//利用N变量统计以bash结尾的行,每找到一行,N加一,最后输出N的个数
4     

这里写图片描述
这里写图片描述
这里写图片描述

awk基本用法二:


1.awk -F ":" '/^ro/{print}' passwd  
//显示以ro开头的行
2.awk -F ":" '/^[a-d]/{print}' passwd  
//显示以a到d(a,b,c,d)字母开头的行
3.awk -F ":" '/^ro|nologin$/{print}' passwd
//显示以ro开头或是以nologin结尾的行
4.awk -F ":" '/^[^a-d]/{print}' passwd 
//显示不以字母a到d开头的行
5.awk -F ":" '$5~/^r/{print}' passwd  
//显示第五列以r开头的行
6.awk -F ":" '$1!~/^r/{print}' passwd  
//显示第一列不以r开头的行
7.awk -F ":" '{print NR,$0}' passwd  
//显示每行行号并输出
实验:

[root@client mnt]# awk -F ":" '/^ro/{print}' passwd  
//显示以ro开头的行
root:x:0:0:root:/root:/bin/bash
[root@client mnt]# awk -F ":" '/^[a-d]/{print}' passwd 
//显示以a到d(a,b,c,d)字母开头的行
bin:x:1:1:bin:/bin:/sbin/nologin
[root@client mnt]# awk -F ":" '/^ro|nologin$/{print}' passwd 
//显示以ro开头或是以nologin结尾的行
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin

这里写图片描述

[root@client mnt]# awk -F ":" '/^[^a-d]/{print}' passwd
 //显示不以字母a到d开头的行
root:x:0:0:root:/root:/bin/bash
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
user3:x:1003:1003::/home/user3:/bin/bash
[root@client mnt]# awk -F ":" '$5~/^r/{print}' passwd 
 //显示第五列以r开头的行
root:x:0:0:root:/root:/bin/bash
[root@client mnt]# awk -F ":" '$1!~/^r/{print}' passwd  
//显示第一列不以r开头的行
bin:x:1:1:bin:/bin:/sbin/nologin
mysql:x:27:27:MariaDB Server:root/mysql:/sbin/nologin
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
user3:x:1003:1003::/home/user3:/bin/bash

这里写图片描述


[root@client mnt]# awk -F ":" '{print NR,$0}' passwd  
//显示每行行号并输出
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 mysql:x:27:27:MariaDB Server:root/mysql:/sbin/nologin
4 user1:x:1001:1001::/home/user1:/bin/bash
5 user2:x:1002:1002::/home/user2:/bin/bash
6 user3:x:1003:1003::/home/user3:/bin/bash

这里写图片描述

练习: 写一个脚本输出本机的ip
[root@client mnt]# cat ip_show.sh 
#########################
# Author:       yifan                 #
# Version:                            #
# Mail:                               #
# Date:         2018-05-06/22/18    #
# Description:                        #
#                                     #
######################### 
#!/bin/bash
ifconfig eth0 | awk '/inet\>/{print $2}'   //搜索inet不加扩展
[root@client mnt]# sh ip_show.sh 
172.25.254.226
[root@client mnt]# ifconfig eth0 | awk -F " " '/inet /{print $2}' //方法e二
172.25.254.226

这里写图片描述

猜你喜欢

转载自blog.csdn.net/yifan850399167/article/details/80778595
今日推荐