Shell基础之通配符和正则表达式

目录

通配符

通配符介绍

通配符示例

正则表达式

grep命令

基本正则表达式

扩展正则表达式


通配符

        在 Shell 中,通配符是用于查找文件名和目录名的,它是由 Shell 处理的,只会出现在命令的参数中

通配符介绍

* 匹配任意长度的字符,可以是0个
匹配任意单个字符,必须是1个
[] 匹配指定的字符范围内的任意单个字符
[a-z,A-Z,0-9] 匹配所有字母和数字,可以不加逗号
[a-z] 匹配所有小写字母
[A-Z] 匹配所有大写字母
[A-z] 匹配所有大小写字母,等价于[a-z,A-Z]
[:upper:] 匹配所有大写字母,等价于[A-Z]
[:lower:] 匹配所有小写字母,等价于[a-z]
[:alpha:] 匹配所有字母,等价于[A-z]
[:digit:] 匹配所有数字,等价于[0-9]
[:alnum:] 匹配数字和大小写字母
[:space:] 匹配水平和垂直空白字符
[^] 匹配指定字符范围外的任意单个字符
[^0-9] 匹配除数字以外,它等价于[^[ :digit: ]]

通配符示例

示例1:

        显示当前工作空目录下所有以 arr 开头的文件

[root@openEuler ~]# ls a*
ahead  arr1.sh  arr2.sh  arr3.sh

示例2:

        显示当前工作目录下所有在 arr 后有一个字符的文件

[root@openEuler ~]# ls
ahead  arr1.sh  arr2.sh  arr3.sh  arrbb.sh  arrb.sh  ips  myfile arr.sh

[root@openEuler ~]# ls arr?.sh
arr1.sh  arr2.sh  arr3.sh  arrb.sh

示例3:

        显示当前工作目录下所有以 i 或 m 开头的文件

[root@openEuler ~]# ls
ahead  arr1.sh  arr2.sh  arr3.sh  arrbb.sh  arrb.sh  arr.sh  ips  myfile

[root@openEuler ~]# ls [im]*
ips  myfile

示例4:

        显示当前工作目录下所有以字母开头的文件

[root@openEuler ~]# touch {1..5}
[root@openEuler ~]# ls
1  3  5      arr1.sh  arr3.sh   arrb.sh  i    m
2  4  ahead  arr2.sh  arrbb.sh  arr.sh   ips  myfile

[root@openEuler ~]# touch File{1,2}

[root@openEuler ~]# ls 
1  3  5      arr1.sh  arr3.sh   arrb.sh  File1  i    m
2  4  ahead  arr2.sh  arrbb.sh  arr.sh   File2  ips  myfile

[root@openEuler ~]# ls [a-zA-Z]*
ahead    arr2.sh  arrbb.sh  arr.sh  File2  ips  myfile
arr1.sh  arr3.sh  arrb.sh   File1   i      m

[root@openEuler ~]# ls [[:alpha:]]*
ahead  arr1.sh  arr2.sh  arr3.sh  arrbb.sh  arrb.sh  arr.sh

[root@openEuler ~]# ls [A-z]*
ahead    arr2.sh  arrbb.sh  arr.sh  File2  ips  myfile
arr1.sh  arr3.sh  arrb.sh   File1   i      m

示例5:

        显示所有以数字开头的文件

[root@openEuler ~]# ls
1  3  5      arr1.sh  arr3.sh   arrb.sh  File1  i    m
2  4  ahead  arr2.sh  arrbb.sh  arr.sh   File2  ips  myfile
[root@openEuler ~]# ls [0-9]*
1  2  3  4  5
[root@openEuler ~]# ls [[:digit:]]*
1  2  3  4  5

示例6:

        显示所有数字和字母开头的文件

[root@openEuler ~]# ls
1  3  5      arr1.sh  arr3.sh   arrb.sh  File1  i    m
2  4  ahead  arr2.sh  arrbb.sh  arr.sh   File2  ips  myfile
[root@openEuler ~]# ls [a-zA-Z0-9]*
1  3  5      arr1.sh  arr3.sh   arrb.sh  File1  i    m
2  4  ahead  arr2.sh  arrbb.sh  arr.sh   File2  ips  myfile
[root@openEuler ~]# ls [A-z0-9]*
1  3  5      arr1.sh  arr3.sh   arrb.sh  File1  i    m
2  4  ahead  arr2.sh  arrbb.sh  arr.sh   File2  ips  myfile
[root@openEuler ~]# ls [[:alnum:]]*
1  3  5      arr1.sh  arr3.sh   arrb.sh  File1  i    m
2  4  ahead  arr2.sh  arrbb.sh  arr.sh   File2  ips  myfile

正则表达式

        正则表达式是通过一些特殊字符的排列,用于查找、替换、删除一行或者多行字符串。它的操作是针对于文件的内容,则前面的通配符是针对于文件和目录名的操作

        以 * 为示例来说明通配符和正则表达式的区别

如果 * 是用于查找文件名或目录名时 表示可以匹配0到多个任意字符
如果 * 用于查找文件的内容 表示重复匹配前一个字符0到多次

        在 Shell 中,正则表达式分为

基本正则表达式
扩展正则表达式

grep命令

        grep命令是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值