正则表达式八道练习题:

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

正则表达式八道练习题_正则表达式八道练习题_02

此题太简单不解释了。

---------------------------------------------------------------------

第三题:

显示`ss -ant`命令结果中以‘LISTEN’后跟0个、1个或者多个空白字符结尾的行

正则表达式八道练习题_正则表达式八道练习题_03

ss -ant|ergep "TEN(\s)+${1,}"

\s在这里是,空白字符。

解题思想:我要过滤匹配以TEN加空格字符结尾,重复一次以上的输出结果

---------------------------------------------------------------------

第四题:解题思想:

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

正则表达式八道练习题_正则表达式八道练习题_04

答案结果(如图):

解题思想:以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}'

正则表达式八道练习题_正则表达式八道练习题_05

---------------------------------------------------------------------

第六题:

找出/etc/rc.d/init.d/functions文件中某单词(单词中间可以存在下划线)后面跟着一组小括号的行

解题思想:精确匹配单词中间允许存在下划线,(一个或者零个)后面跟着一组小括号

egrep "\<[a-z]_?.*\(\)" /etc/rc.d/init.d/functions

正则表达式八道练习题_正则表达式八道练习题_06

---------------------------------------------------------------------

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

解题思想:

正则表达式八道练习题_正则表达式八道练习题_07

---------------------------------------------------------------------

第八题:找出ip add命令执行结果中1-255之间的数字—

解题思想:

第一组数字0-9

 

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

 

第三组为三位数,数字范围100---------255                                                  正则表达式八道练习题_正则表达式八道练习题_08正则表达式八道练习题_正则表达式八道练习题_09

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

 

正则表达式八道练习题_正则表达式八道练习题_10