四、正则表达式

4.1 正则简介

正则,正则表达式

就是一些具有特殊含义的符号:? . * +  ^ $ () {}

简便方法:

通配符:针对文件名进行匹配查找的

正则表达:针对文件的内容进行匹配查找的

4.2 基本正则

4.2.1 匹配位置

匹配行首:

^

匹配行尾

$

匹配单词尾部

\<

匹配单词首部

\>

 案例1:找到包含root的行

grep "root" a.txt

案例2:找到以root开头的行

grep "^root" a.txt

案例3:找到以root结尾的行

grep "root$" a.txt

案例4:找到包含root单词的行

grep "\<root\>"  a.txt

4.2.2 匹配范围

[] 表示限定一个范围
[0-9] 表示0-9之间的任意一个数字
[a-z] 表示任意一个小写字母
[A-Z] 表示任意一个大写字母
[0-9a-zA-Z] 表示任意一个数字或者字母
[a-zA-Z] 表示任意一个字母 = [a-Z]
[acd39] 表示这五个字符中的任意一个字符
[[:space:]] 表示一个空格
[[:digit:]] 表示任意一个数字
[[:lower:]] 表示任意一个小写字母
[[:upper:]] 表示任意一个大写字母
[[:alnum:]] 表示任意一个数字或者字母
[[:punct:]] 表示任意一个符号
[[:digit:][:space:]] 表示一个空格或者任意一个数字

 案例:匹配以字母a或c或f为开头的行

grep "^[acf]" nev1.txt

案例:匹配以数字或空格或#为开头的行

grep "^[[space:][dight]#]"  new11.txt
grep "^[[dight:]#]"  new11.txt
案例:匹配以#为开头,后面是空格,空格后是非空字符
grep "^#[[:space:]][[:alnum:][:punct:]]" new1.txt
匹配范围以外的字符
[^xxxx]
案例1:匹配135以外的字符
grep "[^135]" aa.txt
案例2:匹配不是以1 3 5为开头的行
grep "^[^135]" aa.txt
案例3:匹配以空格为开头的行
grep "^[[:space:]]" a.txt
案例4:匹配以非空格为开头的行
grep "^[^[:space:]]" a.txt

4.2.3 次数匹配

. 表示任意一个字符
* 表示其前面的字符出现任意次数【任意次可以是 0次 1次 无数次】
 \{m,n\} 其前面的字符出现最少m次,最多n次
         \{3,7\} 表示其前面的字符出现最少3次,最多7次
         \{3,\} 表示其前面的字符出现最少3次
         \{,7\} 表示其前面的字符出现最多7次
         \{3,3\} 表示其前面的字符出现3次
? 表其前面的字符出现0次或者1次[最多一次] - 扩展正则的选项
+ 表其前面的字符出现最少一次 - 扩展正则的选项
案例:过滤去文件a.txt中,a前面至少有3个b的行
grep "b\{3,\}a" a.txt
案例:过滤去文件a.txt中,a前面最多有1个b的行
grep "b\{,1\}a" 4.txt
grep -E "b?a" 4.txt
案例:过滤去文件a.txt中,a前面最少有1个b的行
grep -E "b+a" 4.txt
常用的组合
.* 可表示任意个任意字符
案例:匹配以#为开头的行,而且以数字为结尾的行
grep "[0-9].*[0-9]"
案例:匹配出现了两个数字的行
grep "[0-9].*[0-9]" 1

4.2.4  分组

\( 定位分组的位置 \)
\1 引用第一个分组的内容
\2 引用第二个分组的内容
案例:匹配出现两个相同数字的行
grep "\([0-9]\).*\1" 4.txt 1
测试代码
i love my lover
he love his liker
she like her lover
she love her liker
案例:输出前面一致的行,例如前后都是love或者前后都是like
grep -E "(l..e).*\1" 5.5xt

4.2.5   或

| 或
案例:匹配cat Cat
grep -E "(c|C)at" 6.txt
grep -E "(cat|Cat)" 6.txt

  • 10
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值