通配符与正则表达式

通配符与正则表达式的区别

  • 说通配符一般只用于文件名匹配,它是由shell解析的,比如find,ls,cp,mv等。
  • 正则表达式是用来匹配字符串的,针对文件内容的文本过滤工具里,大都用到正则表达式,如vi,grep,awk,sed等。简单点来说,正则表达式是对一组正在处理的文本的描述。
  • 通配符和正则表达式看起来有点像,不能混淆。可以简单的理解为通配符只有*,?,[],{}这4种,而正则表达式复杂多了。

常见通配符

*          //代表0个或无穷多个任意字符
?          //代表一定有一个任意字符
[ ]        //一定有一个在括号内,如[abc]匹配abc任意一个字母
[ - ]      //在编码顺序内的所有字符,如 [0-9] 代表 0 到 9 之间的所有数字
[^ ]       //表示『反向选择』,[^abc]匹配任意一个非abc的字母
{str1,str2} //匹配其中任意一个字符串
  • 通配符实例
//通配符可以与任一个使用文件名为参数的命令一起使用
ls    ./h*           //表示列出当前目录以h开头的所有文件
ls -d ./?????        //列出当前目录下目录名长度为5的所有目录
find b*.txt          //匹配b开头,txt结尾的文件
[abc]                //匹配abc任一个开头的文件
a{abc,xyz,123}b      //列出aabcb,axyzb,a123b
  • 除了通配符shell还有自己的特殊字符
= 设定变量
$ 取变量值或取运算值
>  重定向 stdout
<  重定向 stdin
| 管道符号
& 重导向 file descriptor ,或将命令置于背景执行
( ) 将其内的命令置于 nested subshell 执行,或用于运算或命令替换
{ } 将其内的命令置于 non-named function 中执行,或用在变量替换的界定范围
; 在前一个命令结束时,而忽略其返回值,继续执行下一个命令
&& 在前一个命令结束时,若返回值为 true,继续执行下一个命令
|| 在前一个命令结束时,若返回值为 false,继续执行下一个命令
! 运算意义上的非(not)的意思
# 注释,常用在脚本中
\ 转移字符,去除其后紧跟的元字符或通配符的特殊意义

常见正则表达式

^ 指向一行的开头
$ 指向一行的结尾
. 任意单个字符
[] 字符范围。如[a-z]

? 最多一次
* 必须匹配0次或多次
+ 必须匹配1次或多次
{n} 必须匹配n次
{n,} 必须匹配n次或以上
{n,m} 匹配次数在n到m之间,包括边界
  • 正则表达式实例
//在文件中搜寻特定字符串 将文件中包含like的行输出
//显示行号 并突出like的颜色
grep -n --color=auto like a.txt

//寻找包含good或food的行
grep -n '[fg]ood' a.txt

//只搜寻以food结尾的行
 grep -n 'food$' a.txt
 
//只搜寻以good开头的行
grep -n '^food' a.txt

//fd之间可以有两个o或三个o
grep -n 'fo\{2,3\}d' a.txt
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值