正则表达式与例题

正则表达式与例题

 BRE ERE

由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能

程序支持grep ;sed ;  awk ; vim ; less ; nginx ; varnish

元字符分类字符匹配  匹配次数  位置锚定  分组

二.基本正则表达式元字符

1. 匹配任意单个字符

2[] 匹配指定范围内的任意单个字符

3. [^]  匹配指定范围外的任意单个字符

4. [:alnum:]  字母和 数字

5. [:alpha:]  代表任何英文大小写字符,亦即 A-Z, a-z

6. [:lower:]  小写字母 [:upper:]  大写字母

7. [:blank:]  空白字符(空格和制表符)

8. [:space:]  水平和垂直的空白字符(比[:blank:] 包含的范围广)

9. [:cntrl:]  不可打印的控制字符(退格、删除、警铃

10. [:digit:] 十进制数字 [:xdigit:] 十六进制数字

11[:graph:]  可打印的非空白字符

12. [:print:]  可打印字符

13. [:punct:] 标点符号

三.正则表达式

匹配 前面的字符任意次,包括0

贪婪模式:尽可能长的匹配

.*  任意 长度的任意字符

\?  匹配 其前面的字符0 1

\+  匹配 其前面的字符至少1

\{n\}  匹配 前面的字符n

\{m,n\}  匹配 前面的字符至少m 次,至多n

\{,n\}  匹配 前面的字符至多n

\{n,\}  匹配 前面的字符至少n

位置锚定:定位出现的位置

行首锚定,用于模式的最左侧

行尾锚定,用于模式的最右侧

^PATTERN$ 用于模式匹配整行

^$ 空行

^[[:space:]]*$ 空白行

\< \b  词首锚定,用于单词模式的左侧

\> \b  词尾锚定;用于单词模式的右侧

\<PATTERN\>

四.例题(红色圆点代表答案,蓝色代表输入的命令)

1、显示/proc/meminfo文件中以大小s开头的行:(要求:使用两种方式)

l  [root@localhost
~]# cl

l  [root@localhost ~]# egrep -i ^s /proc/meminfo

l  SwapCached:            0 kB

l  SwapTotal:       3905532 kB

l  SwapFree:        3905532 kB

l  Shmem:             11104 kB

l  Slab:             123848 kB

l  SReclaimable:      65544 kB

l  SUnreclaim:        58304 kB

l  ——————————————————————————-

l  [root@localhost ~]# egrep -e ^s -e ^S /proc/meminfo

l  SwapCached:            0 kB

l  SwapTotal:       3905532 kB

l  SwapFree:        3905532 kB

l  Shmem:             11104 kB

l  Slab:             123848 kB

l  SReclaimable:      65544 kB

l  SUnreclaim:        58304 kB

2、显示/etc/passwd文件中不以/bin/bash结尾的行:

l  [root@localhost ~]# cat /etc/passwd |egrep -v
“/bin/bash”$

l  bin:x:1:1:bin:/bin:/sbin/nologin

l  daemon:x:2:2:daemon:/sbin:/sbin/nologin

l  adm:x:3:4:adm:/var/adm:/sbin/nologin

l  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

l  sync:x:5:0:sync:/sbin:/bin/sync

l  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

l  halt:x:7:0:halt:/sbin:/sbin/halt

3、显示用户rpc默认的shell程序

l  [root@localhost ~]# egrep ‘^rpc\>’ /etc/passwd |cut
-d: -f7

l  /sbin/nologin

4、找出/etc/passwd中的两位或三位数

l  [root@localhost ~]# egrep “[[:digit:]]{2,3}”
/etc/passwd

l  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

l  operator:x:11:0:operator:/root:/sbin/nologin

l  games:x:12:100:games:/usr/games:/sbin/nologin

l  ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

l  nobody:x:99:99:Nobody:/:/sbin/nologin

5、显示centos7/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面存非空白字符的行

l  [root@localhost ~]# egrep
“^[[:space:]]+[^[:space:]]” /etc/grub2.cfg

l  load_env

l  set default=”${next_entry}”

l  set next_entry=

l  save_env next_entry

l  set boot_once=true

l  set default=”${saved_entry}”

l  menuentry_id_option=”–id”

l  menuentry_id_option=””

6、找出“netstat -tan” 命令的结果中以‘LISTEN‘后跟任意多个空白字符结尾的行

l  [root@localhost ~]# netstat -tan | egrep
“LISTEN[[:space:]]*$”

l  tcp       
0      0 0.0.0.0:111             0.0.0.0:*               LISTEN    

l  tcp       
0      0 192.168.122.1:53        0.0.0.0:*               LISTEN    

l  tcp       
0      0 0.0.0.0:22              0.0.0.0:*               LISTEN    

l  tcp       
0      0 127.0.0.1:631           0.0.0.0:*               LISTEN    

7、显示centos7上所有系统用户的用户名和UID

l  [root@localhost ~]# cut -d: -f1,3 /etc/passwd | egrep
“[1-9]{1,3}$”

l  bin:1

l  daemon:2

l  adm:3

l  lp:4

l  sync:5

l  shutdown:6

l  halt:7

l  mail:8

l  operator:11

8、找出/etc/passwd用户名同shell名的行

l  [root@localhost ~]# egrep “^(.*):.*\1$”
/etc/passwd

l  sync:x:5:0:sync:/sbin:/bin/sync

l  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

l  halt:x:7:0:halt:/sbin:/sbin/halt

l  [root@localhost ~]# ^C

9、利用dfegrep,取出磁盘各分区利用率,并从大到小排序

l  [root@localhost ~]# df |grep ^/dev/sd|egrep -o “\b[[:digit:]]{1,3}\b%”|sort
-rn

l  31%

l  18%

l  1%

10、显示三个用户rootmagewangUID和默认shell

l  [root@localhost ~]#
egrep “^(root|mage|wang)\>” /etc/passwd | cut -d: -f3,7

l  0:/bin/bash

l  [root@localhost
~]#

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

l  [root@localhost ~]# egrep -o
^”[_[:alpha:]]+\(\)” /etc/rc.d/init.d/functions

l  checkpid()

l  __kill_pids_term_kill_checkpids()

l  __kill_pids_term_kill()

l  __pids_var_run()

l  __pids_pidof()

l  daemon()

l  killproc()

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

l  [root@localhost ~]# echo
“/etc/rc.d/init.d/functions”|egrep -o “[^/]+$”

l  Functions

13、使用egrep取出上面的路径的目录名。

l  [root@localhost ~]# echo
“/etc/rc.d/init.d/functions”|egrep -o “^.*/”

l  /etc/rc.d/init.d/

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

l  [root@localhost ~]# last
| egrep -o “^root\>.*[0-9]\.[0-9]{1,3}” |tr -s ” ”
“%”|cut -d% -f3|uniq -c

l  18 172.17.250.182

l  1 172.17.254.44

l  2 172.17.254.176

l  2 172.17.250.182

l  1 172.18.250.76

l  2 172.17.254.44

l  8 172.17.250.182

15、利用扩展正则表达式分别表示0-9 10-99 100-199200-249 250-255

0-9  ;【1-9】【0-9】;   10-9】【0-9 20-4】【0-9】;  250-5

16、显示ifconfig 命令结果中所有IPv4 地址

l  [root@localhost ~]#
ifconfig  | egrep  -o “([0-9]{1,3}\.){3}[0-9]{1,3}”

l  172.17.252.64

l  255.255.0.0

l  172.17.255.255

l  172.17.252.65

l  255.255.0.0

l  172.17.255.255

l  127.0.0.1

l  255.0.0.0

l  192.168.122.1

l  255.255.255.0

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

l  [root@localhost ~]# echo
“welcome to  magedu linux” |
egrep -o  “[[:alpha:]]” |
sort  | uniq -c | sort -nr

l  3 e

l  2 u

l  2 o

l  2 m

l  2 l

l  1 x

l  1 w

l  1 t

l  1 n

l  1 i

l  1 g

l  1 d

l  1 c

l  1 a

 

原创文章,作者:Touch,如若转载,请注明出处:http://www.178linux.com/83141

(0)
TouchTouch
上一篇 2017-07-29 16:35
下一篇 2017-07-29 17:03

相关推荐

  • 第一周博客作业

    前言:这几周的课程大部分开班前就掌握了的,这次学的细一点,顺便学一下markdown写博客、排版。内容有部分是前几期学员写的,觉得写得不错,就斗胆截取了,还有部分是自己写的,也有一些是百度到的内容。 目录 一、描述计算机的组成及其功能 二、linux发行版 三、linux哲学思想 四、常用命令 五、如何获取命令的帮助信息 六、linux发行版的基础目录名称命…

    Linux干货 2017-01-09
  • N22-第4周作业-冥界之王

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。    [root@CentOS6 ~]# cp -r /etc/skel/ /home/tuser1/    [r…

    Linux干货 2016-09-19
  • 文件相关操作练习

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限: 2、编辑/etc/group文件,添加组hadoop: 3、手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为/home/hadoop: 4、复制/etc/sk…

    2017-11-17
  • 马哥教育网络班22期+第1周课程练习

    1.描述计算机的组成及其功能 计算机的组成及各功能:  计算机主要由硬件、操作系统、软件三大部分组成 硬件 :主要由五部分组成 :运算器:主要是做数据运算              控制器:控制计算机各部件的协调和寻址操作         …

    Linux干货 2016-08-15
  • 马哥教育网络班21期+第8周课程练习

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。它工作于OSI(开放系统互联参考模型)参考模型第一层,即“物理层”。 网桥将两个相似的网络连接起来,并对网络数据的流通进行管理。它工作于数据链路层,不但能扩展网络的距离…

    Linux干货 2016-09-19
  • 网络模型知识点概括

       网络模型分层 应用层 网络进程访问表示层 数据表示会话层 主机间通信传输层 端到端连接网络层 数据传输   数据链路层 访问介质物理层 物理线缆二进制封包与解封从下至上封包加包头通过上层协议传给对方机器,对方机器接受后需要从上至下拆解包头,这个过程叫解封三种通讯模式单播广播组播局域网:由服务器-》交换机-》pc …

    Linux干货 2017-05-02