人们的正常思维都是顺向的,那么逆向思维呢,特别是初学正则表达式的同学们,好不容易掌握了正则表达式的用法,再突然要你用逆向思维做题,会有很多不适应:
这里拿三道题,来做简单介绍:
1、经典例题取IP:
[root@oldboyedu-39 ~]# ifconfig eth0|sed -nr '2s#^[^0-9]+(.*)[a-Z]{5,}.*#\1#gp'
10.0.0.200
2、调换/etc/passwd中最后一列和第一列的位置:
[root@oldboyedu-39 ~]# head /passwd.txt|sed -r 's#(^[^:]+)(.*:)(.*)#\3\2\1#g'
/bin/bash:x:0:0:root:/root:root
/sbin/nologin:x:1:1:bin:/bin:bin
/sbin/nologin:x:2:2:daemon:/sbin:daemon
/sbin/nologin:x:3:4:adm:/var/adm:adm
/sbin/nologin:x:4:7:lp:/var/spool/lpd:lp
/sbin/nologin:x:4:7:lp:/var/spool/lpd:AzaA
3、
[root@oldboyedu-39 ~]# cat ip.log
10.0.0.1 oldboy
10.0.0.2 oldgirl
10.0.0.3 bingbing
10.0.0.4 tingting
10.0.0.4 oldboy
将属于oldboy的第一列打印出来:
[root@oldboyedu-39 ~]# sed -rn '/oldboy/s#(^[^ ]+).*#\1#gp' ip.log
10.0.0.1
10.0.0.4
以上是正则表达式的几个逆向思维的经典案例,欢迎大家拍砖。