1.简述awk工具的基本语法格式。
格式1: awk [选项] ‘[条件]{处理动作}’ 文件列表
格式2: 命令 | awk [选项] ‘[条件]{处理动作}’
2.简述awk工具常用的内置变量、各自的作用。
FS:保存或设置字段分隔符
$n:即$1、$2、$3……,表示指定分隔的第几个字段
$0:保存当前读入的整行文本内容
NF:记录当前处理行的字段个数(列数)
NR:记录当前已读入行的数量(行数)
FNR:保存当前处理行在原文本内的序号(行号)
FILENAME:保存awk 当前处理的(文件名)
ENVIRON:调用Shell环境变量,格式:ENVIRON["变量名"]
3.awk处理文本时,行前、行中、行后这三个环节是如何表示的?
BEGIN{ } 行前处理:awk没有读入行之前 要执行的动作; 一般对数据作初始化操作,可以单独使用。
{ } 行处理:对awk读入的每一行进行处理,可以单独使用。
END{ }行后处理:awk 把所有的行都处理完后要执行的动作,一般输出数据处理的结果。可以单独使用。
4.提取当前eth0网卡的IPv4地址及掩码信息。
查看测试文本:
[root@svr5 ~]# ip add list eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:64:88:8e brd ff:ff:ff:ff:ff:ff
inet 192.168.4.55/24 brd 192.168.4.255 scope global eth0
inet 192.168.4.5/24 brd 192.168.4.255 scope global secondary eth0
inet6 fe80::20c:29ff:fe64:888e/64 scope link
valid_lft forever preferred_lft forever
提取IPv4地址及掩码信息的操作及效果:
[root@svr5 ~]# ip add list eth0 | awk '/\<inet\>/{print $2}'
192.168.4.55/24
192.168.4.5/24
5.找出UID位于10~20之间的用户,输出用户名及对应的UID。
[root@svr5 ~]# awk -F: '$3>=10 && $3<=20{print $1":"$3}' /etc/passwd
uucp:10
operator:11
games:12
gopher:13
ftp:14
6.找出UID与GID不同的用户,列出用户名及对应的UID、GID。
[root@svr5 ~]# awk -F: '$3!=$4{print $1":"$3":"$4}' /etc/passwd
adm:3:4
lp:4:7
sync:5:0
shutdown:6:0
halt:7:0
mail:8:12
uucp:10:14
operator:11:0
games:12:100
gopher:13:30
ftp:14:50
rtkit:499:497
saslauth:498:76
pulse:497:496