美文网首页
正则符号与通配符

正则符号与通配符

作者: ElephantKing | 来源:发表于2019-10-16 20:47 被阅读0次

从两个简单的命令说开去

*****a.txt begin*****
** abc
** adc
** ac
****a.txt end*****
ls a?txt
grep a.c a.txt
grep a?c a.txt

上面的第一个命令,能正确显示文件a.txt的属性,第二个命令能正确打印abcadc这两行,但是第三个命令输出为空。这里面涉及到三个东西:通配符,基础正则表示符,扩展正则标识符。

通配符

*:代表任意数量的任意字符
?:代表任意一个字符
[]:代表括号里的任意一个字符
[-]:代表括号里表示的字符范围里的一个字符
[^]:代表只要不是括号里的字符的任何一个字符

栗子:
ls *.txt
ls [abc].txt
ls [a-z].txt
ls [^0-9].txt

基础正则表示符

^:一行的开头
$:一行的结尾
.:任何一个字符
\:跳脱字符,将特殊字符变为普通字符,使其失去特殊的意义
*:重复前一个字符的任意次,不能单独使用
[]:括号里的任意一个字符
[-]:括号里表示的字符范围里的任意一个字符
[^]:不是括号里表示的字符范围的任意字符
\{n,m\}:前一个字符的若干次重复

栗子:
grep ^abc a.txt        abc开头的行
grep abc$ a.txt        abc结尾的行
grep a.c a.txt         ac之间带任意字符的行
grep a\$c a.txt        a$c的行
grep a*c a.txt         a重复任意次后跟c的行

扩展正则表示符

+:前一个字符至少一次的重复
?:前一个字符0个或1个
|:表示或
():找出群组
()+:群组重复任意次

一个重要的原则

如果一个命令支持基础正则或扩展正则,那么该命令使用的符号一律被认为是正则语法,而不被当做是通配符,否则命令中的字符将被当做通配符处理。
回到开头的三个例子
ls a?txt:ls不支持正则语法,所以这里的符号'?'就是一个统配符,表示任意一个字符,所以能检索出a.txt这个文件。
grep a.c a.txt:默认只支持基础正则,所以这里能打印出任意ac之间包含一个字符的行(abc,adc..)。
grep a?c a.txt:因为字符'?'是扩展正则里的,所以grep命令默认不支持,而把它当做一个普通字符,所以该命令只能打印出包含a?c的行,如果要打印包含任意个字符a后面紧跟一个字符c的行,需要让命令grep支持扩展正则,命令该写成:grep -E a?c a.txt

哪些命令支持正则

支持通配符:ls、cat、cp、mv、rm
支持基础正则:grep、sed
支持扩展正则:grep -E、sed -r、egrep、awk

相关文章

  • 正则符号与通配符

    从两个简单的命令说开去 上面的第一个命令,能正确显示文件a.txt的属性,第二个命令能正确打印abc和adc这两行...

  • day 17 操作系统正则符号/grep

    系统通配符号: 系统正则符号:grep sed awk 系统正则: BRE( basic regular e...

  • linux符号整理-正则整理

    引号符号系列: 重定向符号系列: 特殊符号系列: 通配符系列匹配文件内容信息 正则符号系列: 扩展正则系列:

  • day17-正则表达式

    正则表达式符号含义 通配符与正则区别? 正则表达式中注意事项 正则表达式分类: 基本正则(BRE) ※ 扩展正则表...

  • 2019-07-24

    day19 课程介绍 1.系统正则符号2.sed命令详解 知识回顾 通配符号 * {}通配符号主要用于匹配文件名...

  • 7月23日 正则符号

    系统通配符号 * 匹配所有内容 {} 匹配序列信息 系统正则符号 主要在grep sed awk 命令用基础正则b...

  • 2019-07-23

    day18 操作系统正则符号/grep 1.系统通配符号2.系统正则符号 知识回顾: 1.系统文件属性(文件类型 ...

  • 通配符与正则表达式

    通配符与正则表达式 通配符 通配符是用来匹配文件名的(最起码linux系统中是这样的)。 正则表达式与通配符的区别...

  • 正则表达式

    正则表达式符号(元字符) '.':通配符。默认匹配除了'\n'以外的任意一个字符(包括字母、符号与数字)。若指定f...

  • 正则化表达式与通配符

    正则化表达式与通配符 "."符号 点符号用于匹配除换行符之外的任意一个字符。例如,r.t可以匹配rot,rut,但...

网友评论

      本文标题:正则符号与通配符

      本文链接:https://www.haomeiwen.com/subject/ghzumctx.html