正则表达式与例题

正则表达式与例题

 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
下一篇 2017-07-29

相关推荐

  • 文件系统配额操作

    创建磁盘配额是实际工作中会遇到的内容,下面是一个磁盘配额的全部过程 一、总体步骤 1 启用配额挂载选项 2 创建配额数据库 3启用数据库 4指定用户空间限制 5测试 6查询 二、分步操作过程 (1)  查看独立的磁盘(或者是分区) [root@localhoast ~]# lsblk NAME   …

    Linux干货 2016-11-23
  • Linux网络属性管理

      ifconfig命令 ifconfig [interface] # ifconfig -a # ifconfig IFACE [up|down] ifconfig interface [aftype] options | address … # ifconfig IFACE IP/mask [up] # ifconfig IFACE…

    Linux干货 2015-09-26
  • sed工具实践解析

    此次博文介绍一下文本处理三剑客中的sed工具(点击查看grep工具http://www.178linux.com/83512) 介绍sed: sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。 运行过程: sed编辑器逐行处理文件,并将结果发送到屏幕。具体过程如下:首先sed把当前正在处理…

    Linux干货 2017-08-26
  • 关于shell脚本基础编程第五篇

                  shellb编程基础第五篇              本章内容:数组 变量:存储单个元素的内存空间数组:存储多个元素的连续的内存空间…

    系统运维 2016-08-24
  • 天神之剑Vim编辑器

    一.概述和基本用法及一些描述 vi:Visual Interface 文本编辑器 文本ASCII , Unicode 文本编辑种类: 行编辑器:sed 全屏编辑器:nano,vi vim – Vi Improved 其他编辑器: gedit 一个简单的图形编辑器 gvim 一个vim编辑器的图形版本 基本用法  vim [OPTION]…

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

    1、请描述一次完整的http请求处理过程; (1) 建立或处理连接:接收请求或拒绝请求 (2) 接收请求: 接收来自于网络的请求报文中对某资源的一次请求的过程; 持久连接:接收到请求不会断开这个请求 非持久连接:一个连接请求断开一次 并发访问响应模型(Web I/O): 单进程I/O结构:启动一个进程处理用户请求,而且一次只处理…

    Linux干货 2016-09-26