[17]AWK匹配操作符、算术运算、验证数据有效性与范围模式

一,匹配操作符
1,
前面介绍了模式,也可以对特定的列使用模式匹配符“~”,与条件作比较
语法:
~//       或者     !~//
二,算术运算
1,
可以在模式中执行计算操作;逻辑操作符用来测试模式的真假

&&             逻辑与                1&&0
        FALSE
||             逻辑或                1||0
        TRUE
!             逻辑非                 !0
    
        TRUE
2,
[root@rhel helinbash]# gawk -F: ' $3 >500 ' /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
[root@rhel helinbash]# gawk -F: ' $3 >500 && $3 < 1000 ' /etc/passwd    
[root@rhel helinbash]#
3,
[root@rhel helinbash]# gawk '{ print NR, ":",$0}' /etc/passwd
1 : root:x:0:0:root:/root:/bin/bash
2 : bin:x:1:1:bin:/bin:/sbin/nologin
3 : daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 : adm:x:3:4:adm:/var/adm:/sbin/nologin
5 : lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 : sync:x:5:0:sync:/sbin:/bin/sync
7 : shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8 : halt:x:7:0:halt:/sbin:/sbin/halt
9 : mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10 : news:x:9:13:news:/etc/news:
11 : uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
12 : operator:x:11:0:operator:/root:/sbin/nologin
13 : games:x:12:100:games:/usr/games:/sbin/nologin
14 : gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
15 : ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
16 : nobody:x:99:99:Nobody:/:/sbin/nologin
17 : nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
18 : vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
19 : rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin
20 : mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin
21 : smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin
22 : pcap:x:77:77::/var/arpwatch:/sbin/nologin
23 : ntp:x:38:38::/etc/ntp:/sbin/nologin
24 : dbus:x:81:81:System message bus:/:/sbin/nologin
25 : avahi:x:70:70:Avahi daemon:/:/sbin/nologin
26 : sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
27 : rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
28 : nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
29 : haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
30 : avahi-autoipd:x:100:101:avahi-autoipd:/var/lib/avahi-autoipd:/sbin/nologin
31 : xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin
32 : gdm:x:42:42::/var/gdm:/sbin/nologin
33 : sabayon:x:86:86:Sabayon user:/home/sabayon:/sbin/nologin
34 : oracle:x:500:500::/home/oracle:/bin/bash
35 : named:x:25:25:Named:/var/named:/sbin/nologin
[root@rhel helinbash]#
4,
[root@rhel helinbash]# gawk ' NR >= 19 && NR<=26 {print $0 }' /etc/passwd >

/tmp/passwd.extra
[root@rhel helinbash]# cat /tmp/passwd.extra
rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin
mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin
smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin
pcap:x:77:77::/var/arpwatch:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
avahi:x:70:70:Avahi daemon:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
[root@rhel helinbash]# rm -rf /tmp/passd.extra
[root@rhel helinbash]#
三,验证数据的有效性
1,
验证数据的有效性可以综合我们之前所学的判断方式判断有效数据是否为七列,可以通过检测 NF 内部变量。
2,
awk  'NF !=7 {....}' filename
判断是否为字母开头
awk  '$1 ~ /^[a-zA-Z]+/' {....} filename
判断数值是否大于某值
awk  '$4 > 200 {....}' filename
3,
环境:拷贝,passwd,并进行破坏原有的行和列数
[root@rhel helinbash]# gawk -F: 'NF !=7 { print NR, ":", $0}' passwd     
7 : shutdown:x:shutdown:/sbin:/sbin/shutdown
11 : uucp:x:10:fasdfasdfasdf:14:uucp:/var/spool/uucp:/sbin/nologin
14 : gopher:x:13:30:gopher:/v:ar/gopher:/sbin/nologin
[root@rhel helinbash]#
四,范围模式
1,
范围模式提供了选择一段数据操作的可能 先匹配第一个模式,将作为开始部分 接着匹配第二个模式,作为结束 之间的这一段将选中做操作 模式与模式之间使用“,”逗号间隔。
2,
从mail开始到sshd结束
[root@rhel helinbash]# gawk '/mail/,/sshd/' /etc/passwd
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:13:news:/etc/news:
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin
mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin
smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin
pcap:x:77:77::/var/arpwatch:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
avahi:x:70:70:Avahi daemon:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
[root@rhel helinbash]#

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29611940/viewspace-1174371/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29611940/viewspace-1174371/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值