正则表达式

正则表达式

正则表达式通常会跟三个命令来一起使用

​ grep、sed、awk

三剑客

1、grep

对文本内容进行逐行过滤

grep -[选项] "过滤内容" 文本内容
	-v 取反
	-o 只匹配需要过滤的内容
	-o | wc -l 统计过滤内容的个数
	-i 忽略大小写
	-n 显示行数
	-w 精准匹配
	-A 匹配之后若干行
	-B 匹配之前若干行
	-C 匹配前后若干行

正则表达式

1、元字符
1、匹配单个字符
1) . 表示任意一个字符
2) [] 表示范围内的任意一个字符
	[0-9] 匹配任意数字
	[A-Z] 匹配任意大写字母
	[a-z] 匹配任意小写字母
	[a-zA-Z]
	[0-9a-zA-Z]
	[[:space:]] 表示空格
	[[:digit:]] 表示0-9 全部数字,等价于 0123456789,而不是[0123456789]
	[[:lower:]] 表示任意小写字母
	[[:upper:]] 表示任意大写字母	
	[[:alpha:]] 表示任意一个字母
	[[:alnum:]] 表示任意一个数字或字母 
	[[:punct:]] 表示任意一个符号	
3)  [^] 匹配范围以外的任意一个字符
4) * 匹配任意多个字符(0,1,n)
	a*b b前面出现任意多个a
	ab* a后面出过任意多个b
	.* 表示任意长度的任意字符
5) \? 匹配前面得字符最多一次
	a\?b 表示 b 或者 ab
6) \{m,n\} 匹配前面的字符最少 m 次最多 n 次 的情况
	a\{2.5\}b 匹配a最少2次最多5次
	\{m,\} 匹配前面的字符最少 m 次
	\{,n\} 匹配前面的字符最多 n 次
7) 位置锚定
	^ 表示以某字符开头的行
	$ 表示以某字符结尾的行
8) 单词锚定
	\<\> 表示匹配某个单词,\<root\>,只匹配root
2、分组
分组:
1) \(\) 表示将括号中的内容视为一个整体
2) \1 表示引用最前面第一个小括号内出现的内容
3) \2 表示引用最前面第二个小括号内出现的内容
3、扩展正则表达式

基本正则表达式:grep [选项] “匹配内容” 文件

扩展正则表达式:grep -E [选项] “匹配内容” 文件

​ egrep [选项] “匹配内容” 文件

练习

作业
1.从文件/etc/inittab中过滤出包含任意数字的行
grep "[[:digit:]]" /etc/inittab

2.从文件/etc/inittab中过滤出包含两个相同数字的行
grep "\<\([0-9]\)\{2\}\>" /etc/inittab
grep "\<[0-9][0-9]\>" /etc/inittab

3..从文件/etc/inittab中过滤出包含两位数的行
grep "\([0-9]\)\{2\}" /etc/inittab
grep "\([0-9]\)\{2\}" /etc/inittab

4.从文件/etc/inittab中过滤出以#开头的行
grep "^\#" /etc/inittab

5.从文件/etc/inittab中过滤出以非#开头的行
grep "^[^\#]" /etc/inittab

6.从文件/etc/inittab中过滤出以#开,以数字为结尾的行
grep "^\#.*[0-9]$" /etc/inittab

7.从文件/etc/inittab中过滤出以#开,以.为结尾的行
grep "^\#.*\.$" /etc/inittab

8.从文件/etc/inittab中过滤出仅有#的行
grep "^\#*\#$" /etc/inittab

9.从文件/etc/inittab中过滤出以#为开头,并且#后的第一个非空字符是2或4或6的行
grep "^\#[246]" /etc/inittab

10.从文件/etc/passwd中过滤出以/bin/bash结尾行
grep "\/bin\/bash$" /etc/passwd

11从文件/etc/passwd中过滤出以 root 或者 bin 开头的行
grep -E "^root|^bin" /etc/passwd

12.从文件/etc/inittab中过滤出包含单词rc 的行(rcS不能匹配)
grep "rc[^S]" /etc/inittab
grep "rc($|[^S])" -E /etc/inittab

13.从命令ifconfig eth0的执行结果中过滤出1-255之间的整数
ifconfig eth0 | grep -E "(2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2}"

14.从命令ifconfig eth0的执行结果中过滤出两位数或者三位数
ifconfig eth0 | grep -E "\<[1-9][0-9]{1,2}\>"

15.从命令ifconfig eth0的执行结果中过滤出类似于xxx.xxx.xxx.xxx的ip格式
ifconfig eth0 | grep -E "([0-9]{1,3})(\.[0-9]{1,3}){3}"

16.从命令ifconfig eth0的执行结果中过滤出合法的ip地址
ifconfig eth0 | grep -E ((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}

``

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值