【shell】正则表达式:常见通配符、元字符与转义符

一. 定义

正则表达式就是能用某种模式去匹配一类字符串的公式,它是由一串字符和元字符构成的字符串。所谓元字符,就是用以阐述字符表达式的内容、转换和描述各种操作信息的字符。

二. 常见通配符

1. 匹配一个

1.1 " . " 点符号

点符号用于匹配除换行符之外的任意一个字符。

[root@localhost ~]# grep 'r..t' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

1.2. " ? "符号:代表任意一个

当它作为通配符使用时,代表的是任意一个字符。
如果要列出以字母A开头、中间有一个字母的文件名、以.doc结尾的文件,就需要使用“?”了。

[root@localhost ~]# ls-l A?.doc

1.3. " $ "符号:匹配尾部

" $ “用于匹配尾部,比如说” abc$ "代表的是以abc结尾的行。

" ^$ ": 则代表该行为空,因为 ^ 和 $ 间什么都没有

# 以r开头,中间有一串任意字符,以h结尾的行
[root@localhost ~]# grep '^r.*h$' /etc/passwd
root:x:0:0:root:/root:/bin/bash

1.4. " [] "符号

用于匹配方括号内出现的任一字符

A、B、C、D选项中的任意一种,用正则表达式表示就是[ABCD]
要匹配任意一个大写字母,就需要使用“-”号做范围限定,写成[A-Z],要匹配所有字母则写成[A-Za-z]。

匹配手机号:“^1[38][0-9]{9}”

1.5. " ^ “符号和” ! "符号

  1. 当出现在“[]”中的时候,代表取反。[^A](或[!A])代表不是A。
  1. 用于匹配开头。比如说“^root”匹配的是以字母root开始的行。
[root@localhost ~]# grep '^root' 
/etc/passwdroot:x:0:0:root:/root:/bin/bash

2. 匹配多个

2.1. " * "符号

代表0个或多个字符。比如*.doc指所有以.doc结尾的文件。

”号经常和“.”符号加在一起使用。比如“.”代表任意长度的不包含换行的字符。

[root@localhost ~]# grep 'r*t' /etc/passwd
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
。。。。

2.2. " {n,m} "符号

" * "不能精确地控制匹配的重复次数,但使用“{n,m}”符号则能更加灵活地控制字符的重复次数.

2.3. " {} "符号

匹配所有括号内包含的以逗号隔开的字符。

例如,下面列出了所有以字母A、B、C开头,以.doc结尾的文件:

#第一种方法:用“{
    
    }[root@localhost ~]# ls -l {
    
    A,B,C}.doc
#第二种方法:用“[][root@localhost ~]# ls -l [A-C].doc
#以上两种方法都能满足题意,但是如果要列出以字母AB或者CD开头、以.doc结尾的文件,就只能用“{
    
    }”了。
[root@localhost ~]# ls -l {
    
    [A-Z]*.doc,[0-9]??.txt}

三、元字符 与转义符

在这里插入图片描述

在这里插入图片描述

 
 

参考:
https://www.cnblogs.com/chengmo/archive/2010/10/17/1853344.html

猜你喜欢

转载自blog.csdn.net/hiliang521/article/details/131532569
今日推荐