实例9:打印/etc/passwd 中 UID >= 100 并且用户的 shell 是/bin/sh 的用户
[root@localhost ~]# awk -F: '$3 >= 100 && $7 == "/bin/sh"' /etc/passwd user1:x:800:800:test user:/none:/bin/sh或者:
[root@localhost ~]# awk -F ':' '$3 >= 100 && $NF ~ /\/bin\/sh/' /etc/passwd user1:x:800:800:test user:/none:/bin/sh #正则表达式模式匹配实例10:打印/etc/passwd 中没有注释信息(第 5 个字段)的用户
[root@localhost ~]# awk -F: '$5 == ""' /etc/passwd abrt:x:173:173::/etc/abrt:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin sys:x:498:1001::/home/sys:/bin/bash natasha:x:1006:1007::/home/natasha:/bin/bash harry:x:1007:1008::/home/harry:/bin/bash sarah:x:497:497::/home/sarah:/bin/nologin实例11:使用取反(!)运算符打印奇数行
1 2 3 4 5 6
[root@localhost ~]# seq 10 | awk 'i=!i' 1 3 5 7 9
实例12:打印偶数行
1 2 3 4 5 6
[root@localhost ~]# seq 10 | awk -v i=1 'i=!i' 2 4 6 8 10
六、正则表达式操作符
实例1:
[root@localhost ~]# cat items.txt 101,HD Camcorder,Video,210,10 102,Refrigerator,Appliance,850,2 103,MP3 Player,Audio,270,15 104,Tennis Racket,Sports,190,20 105,Laser Printer,Office,475,5 [root@localhost ~]# awk -F, '$2 == "Tennis"' items.txt #精确匹配 [root@localhost ~]# awk -F, '$2 ~ "Tennis"' items.txt #模糊匹配 104,Tennis Racket,Sports,190,20实例2:
[root@localhost ~]# awk -F, '$2 !~ "Tennis"' items.txt #不匹配 101,HD Camcorder,Video,210,10 102,Refrigerator,Appliance,850,2 103,MP3 Player,Audio,270,15 105,Laser Printer,Office,475,5实例3:打印 shell 为/bin/bash 的用户的总数,如果最后一个字段包含”/bin/bash”,则变量n 增加 1
[root@localhost ~]# grep -c '/bin/bash' /etc/passwd 9 [root@localhost ~]# awk -F: '$NF ~ /\/bin\/bash/ { n++ } END{ print n}' /etc/passwd 9补充说明:
awk PATTERN模式的其他形式:
empy:空模式,匹配所有行
关系表达式,表达式结果非0为真,则执行后面body中语句;0则为假,不执行。例如
1
awk -F: '$3>=500{print $1,$3} ' /etc/passwd
3.行范围,类似sed或vim中的地址定界:
1
/start pattern/,/end pattern/
注意:不支持直接给出数字格式
实例:
1 2 3 4 5 6 7 8 9 10
[root@localhost ~]# awk '/^root/,/^mail/{print $0}' /etc/passwd root:x:0:0:young,geek,010110110,0101101101:/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 sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin