天天看点

正则表达式

讲师说这是个难点,所以就把这部分写一下,本人认为通过习题理解会更深刻一些。

1.找出/etc/passwd中的两位或三位数

<a href="https://s3.51cto.com/wyfs02/M00/9D/3E/wKiom1l8TavSriv4AABFdWLNLfE042.png" target="_blank"></a>

注意:在做这道题时,一定要锚定词首词尾,锚定词尾因为四位数包含三位数,如下图所示

<a href="https://s1.51cto.com/wyfs02/M01/9D/3E/wKiom1l8TdLBUrLbAABQ_wL87Zc579.png" target="_blank"></a>

锚定词首是因为万一所建的用户名中包含数字,如下图所示。

<a href="https://s4.51cto.com/wyfs02/M00/9D/3E/wKioL1l8TfSBOlSRAAAREXs-4nk733.png" target="_blank"></a>

2.添加用户bash、testbash、basher、sh、nologin(其shell为/sbin/nologin),找出/etc/passwd用户名同shell名的行。

<a href="https://s2.51cto.com/wyfs02/M02/9D/3E/wKiom1l8UkGyT43IAABUCs4iqfM921.png" target="_blank"></a>

在做这道题的时候,我就忽视了下面的情况,主要是当时对词首词尾锚定理解不够深刻。要避免这种情况的出现,也可以加个/来区别。

<a href="https://s1.51cto.com/wyfs02/M01/9D/3E/wKiom1l8UbmgKQJoAABjx6S_gys062.png" target="_blank"></a>

3.找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行

<a href="https://s3.51cto.com/wyfs02/M00/9D/3E/wKioL1l8VqKxDM3gAABJwZ5HA1U207.png" target="_blank"></a>

正则表达式

4.将此字符串:welcome to magedu linux 中的每个字符去重并排序,重复次数多的排到前面

<a href="https://s3.51cto.com/wyfs02/M01/9D/3F/wKioL1l8WdvyoZlxAABS3KZukhs831.png" target="_blank"></a>

这个题的难点是怎样把这句话以单个字母单行显示,这个会了,其他就小菜一碟。

5.使用egrep取出/etc/rc.d/init.d/functions中其基名

<a href="https://s1.51cto.com/wyfs02/M00/9D/41/wKiom1l8g46QOCuSAAAjYYMfUrI479.png" target="_blank"></a>

注意:^放在括号里是“非”的意思放在括号外边是行首的意思。

6.统计last命令中以root登录的每个主机IP地址登录次数

<a href="https://s4.51cto.com/wyfs02/M01/9D/41/wKiom1l8hYjB2fWOAAAkM1KsBVg086.png" target="_blank"></a>

注意:先把root截取出来,再取ip地址。

7.使用正则表达式的时候,使用扩展表达式比较方便,因为很多地方不用加转义字符。另外,"."包含大小写字母,数字和下划线。

本文转自    honeyorange   51CTO博客,原文链接:http://blog.51cto.com/13172732/1952009