一、awk命令应用
1.语法格式:
awk 参数 文件
常用参数:
-F 指定输入时用到的字段分隔符
-v 自定义变量
-f 从脚本中读取awk命令
-m 对val值设置内在限制
内置变量:
变量名称 说明
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行 -F选项
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
awk 域分隔符 '命令'
常用分隔符为“:”,“空格”
awk '命令'
表示直接默认分隔符为空格
2.示例:
1.检测系统中UID为0的用户
[root@harbor ~]# awk -F: '$3 == 0 { print $1 }' /etc/passwd
root
2.检测系统中密码为空的用户
awk -F: 'length($2)==0 {print $ 1}' /etc/shadow
3.仅显示指定文件中第1、2列的内容(默认以空格为间隔符)
[root@linuxcool ~]# awk ' {print $1,$2} ' anaconda-ks.cfg
#version=RHEL8
ignoredisk --only-use=sda
autopart --type=lvm
# Partition
clearpart --none
... ...
4.以冒号为间隔符,仅显示指定文件中第1列的内容
[root@linuxcool ~]# awk -F : '{print $1}' /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
… …
5.以冒号为间隔符,显示系统中所有UID号码大于500的用户信息(第3列)
[root@linuxcool ~]# awk -F : '$3>=500' /etc/passwd
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
geoclue:x:997:995:User for geoclue:/var/lib/geoclue:/sbin/nologin
… …
6.仅显示指定文件中含有指定关键词root的内容
[root@linuxcool ~]# awk '/root/{print}' anaconda-ks.cfg
rootpw --iscrypted $6$n9sZuTcY8Yzk4l.Q$LsuMNAROewyx.LomDtPpL9iJIOD3tsRThnzsAGE0hZXLMtdVCHVQ3pxzm3El8K2kuhcYLXJnhz.xUDGiE27s/1
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
7.以冒号为间隔符,仅显示指定文件中最后一个字段的内容
[root@linuxcool ~]# awk -F: '{print $NF}' /etc/passwd
/bin/bash
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/bin/sync
… …