正则表达式与例题

正则表达式与例题

 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

相关推荐

  • Linux 文本编辑器三剑客之 sed

    参考手册: http://www.gnu.org/software/sed/manual/sed.html 转载请注明:马哥教育!!

    Linux干货 2017-01-12
  • vim用法详解

    vim编辑器:文本编辑器: 文本:纯文本,ASCII text;Unicode 文本编辑器种类:     行编辑器:sed     全屏编辑器:nano,vi   vi:visual interface vim:vi improv…

    Linux干货 2016-08-15
  • 文件查找工具locate和find的使用分析

    文件查找工具locate和find的使用分析 不管是在windows系统中还是在Linux系统中,我们经常会一些文件进行搜索查找,而在Linux系统中经常用到的搜索工具有locate和find,这两种搜索工具的工具原理和用法都不相同,一下将这对这两种搜索工具的使用进行分析。 1、locate工具的工作原理是对/var/lib/mlocate/mlocat.d…

    Linux干货 2016-08-18
  • 系统基础之文件管理工具

    系统基础之文件管理工具   linux的重要哲学思想之一,一切皆文件.那作为系统管理员,就要求对文件的操作管理特别熟悉.那么下面介绍的一个工具可以帮助到大家,更有效,快捷的完成对文件的处理.下面让我们来认识以下的工具. 文本工具: 文件内容:   cat: 复制标准输入到标准输出     选项:   &nbs…

    Linux干货 2016-08-07
  • #!/bin/bash # for i in $(ls /etc/rc.d/rc3.d/ | grep  "\<K");do     echo $i.stop    &nbs…

    Linux干货 2016-12-26
  • 第二十一周作业

    1、回顾并详细总结MySQL的存储引擎、索引; 常用存储引擎的对比: 特点 MyISAM InnoDB MEMORY MERGE NDB 存储限制 有 64TB 有 没有 有 事务安全 支持 锁机制 表锁 行锁 表锁 表锁 行锁 B树索引 支持 支持 支持 支持 支持 哈希索引 支持 全文索引 支持 集群索引 支持 数据缓存 支持 支持 支持 索引缓存 支持…

    2017-07-19