三剑客

awk

格式:

awk '{pattern + action}' {filenames}

实例

查看最近登录的5个用户

[root@node1 ~]# last -n 5
root     pts/6        10.0.0.20        Sun Aug 20 14:06 - 14:06  (00:00)    
root     pts/6        10.0.0.20        Sun Aug 20 14:04 - 14:06  (00:01)    
root     pts/6        10.0.0.20        Sun Aug 20 14:04 - 14:04  (00:00)    
root     pts/0        10.0.0.1         Sun Aug 20 11:45 - 11:52  (00:06)    
root     pts/1        10.0.0.1         Sun Aug 20 06:40   still logged in  

如果只要显示最近登录的5个账号

[root@node1 ~]# last -n 5 | awk '{print $1}'
root
root
root
root
root

显示/etc/passwd 的账号

[root@node1 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

只显示账号    -F后为分割符  默认为空格

[root@node1 ~]# cat /etc/passwd | awk -F':' '{print $1}'
root
bin
daemon
adm
lp

显示第一行和第七行的信息

[root@node1 ~]# cat /etc/passwd | awk -F':' '{print $1"	"$7}'
root    /bin/bash
bin    /sbin/nologin
daemon    /sbin/nologin
adm    /sbin/nologin
lp    /sbin/nologin

搜索/etc/passwd有root关键字的所有行

[root@node1 ~]# awk -F: '/root/' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
dockerroot:x:996:993:Docker User:/var/lib/docker:/sbin/nologin

搜索/etc/passwd有root关键字的所有行中的shell

[root@node1 ~]#  awk -F: '/root/{print $7}' /etc/passwd
/bin/bash
/sbin/nologin
/sbin/nologin

awk内置变量

ARGC               命令行参数个数
ARGV               命令行参数排列
ENVIRON            支持队列中系统环境变量的使用
FILENAME           awk浏览的文件名
FNR                浏览文件的记录数
FS                 设置输入域分隔符,等价于命令行 -F选项
NF                 浏览记录的域的个数
NR                 已读的记录数
OFS                输出域分隔符
ORS                输出记录分隔符
RS                 控制记录分隔符

 

原文地址:https://www.cnblogs.com/wanglan/p/7483088.html