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 控制记录分隔符