您的位置:首页 > 其它

正则表达式八道练习题

2017-11-15 16:52 120 查看
正则表达式八道练习题:
Linux:运维正则表达式练习题:
1、显示/etc/passwd文件中以bash结尾的行
2、显示/etc/passwd文件中的两位数或三位数
3、显示`ss -ant`命令结果中以‘LISTEN’后跟0个、1个或者多个空白字符结尾的行
4、添加用户bash、testbash、basher以及nologin用户(nologin用户的shell为/sbin/nologin);而后找出/etc/passwd文件中用户名与其shell名相同的行
5、显示当前系统上root、centos或者user1用户的默认shell和UID (请事先创建这些用户,若不存在)
6、找出/etc/rc.d/init.d/functions文件中某单词(单词中间可以存在下划线)后面跟着一组小括号的行
7、使用echo输出一个路径,而后egrep找出其路径基名;进一步的使用egrep取出其目录名
8、找出ip add命令执行结果中1-255之间的数字
---------------------------------------------------------------------
---------------------------------------------------------------------
答案分解:
第一题:显示/etc/passwd文件中以bash结尾的行



此题太简单不解释了。
---------------------------------------------------------------------
第二题:显示/etc/passwd文件中的两位数或三位数
egrep "[0-9]{2,}" /etc/passwd



此题太简单不解释了。
---------------------------------------------------------------------
第三题:
显示`ss -ant`命令结果中以‘LISTEN’后跟0个、1个或者多个空白字符结尾的行



ss -ant|ergep "TEN(\s)+${1,}"
\s在这里是,空白字符。
解题思想:我要过滤匹配以TEN加空格字符结尾,重复一次以上的输出结果

---------------------------------------------------------------------
第四题:解题思想:
老师讲解过,匹配的内容会有一个贪婪模式,尽可能的向后匹配。题目要求,找出/etc/passwd文件中用户名与其shell名相同的行



答案结果(如图):

解题思想:以A-Za-z0-9为一个组,重复一次以上,以重复前面前面组的子表达式为结尾(唯一的结尾)
egrep "^([A-Za-z0-9]{1,}):.*\1$" /etc/passwd

--------------------------------------------------------------------------------------
第五题: 显示当前系统上root、centos或者user1用户的默认shell和UID (请事先创建这些用户,若不存在)解题思想:以root用户,centos用户,user1用户开头的,取第1,3,7列egrep "^root|centos|user1"/etc/passwd|awk -F "[:]" '{print $1":"$3":"$7}'

---------------------------------------------------------------------第六题:找出/etc/rc.d/init.d/functions文件中某单词(单词中间可以存在下划线)后面跟着一组小括号的行解题思想:精确匹配,单词中间允许存在下划线,(一个或者零个),后面跟着一组小括号egrep "\<[a-z]_?.*\(\)" /etc/rc.d/init.d/functions


---------------------------------------------------------------------
第七题:使用echo输出一个路径,而后egrep找出其路径基名;进一步的使用egrep取出其目录名:
解题思想:



---------------------------------------------------------------------
第八题:找出ip add命令执行结果中1-255之间的数字—
解题思想:
第一组数字0-9

第二组数字是十位数,十位数是两位。不能拆分开要作为一组数字来显示,用小括号括起来

第三组为三位数,数字范围100---------255




ip add|egrep "\<(([1-9])|([1-9][1-9])|(1[0-9]{2})|(2[0-5]{2}))"



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息