Shell脚本攻略:通配符、正则表达式

这篇具有很好参考价值的文章主要介绍了Shell脚本攻略:通配符、正则表达式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、理论

1.通配符

2.正则表达式

二、实验

1.通配符

2.正则表达式


一、理论

1.通配符

(1)概念

通配符只用于匹配文件名、目录名等,不能用于匹配文件内容,而且是已存在的文件或者目录。

各个版本的shell都有通配符,这些通配符是一些特殊的字符,
用户可以在命令行的参数中使用这些字符,进行文件名或者路径名的匹配。
shell将把与命令行中指定的匹配规则符合的所有文件名或者路径名作为命令的参数,
然后执行这个命令。

(2)通配符

表1 常用通配符

通配符 功能
* 通配符匹配任意一个或多个字符
? 通配符匹配一个任意字符
[] [list]匹配list中任意单个字符

2.正则表达式

(1)概念

正则表达式英文为REGEXP(Regular Expressions),它是由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能,
类似于增强版的通配符功能,但与通配符不同,通配符功能是用来处理文件名,而正则表达式是处理文本内容中字符。

注意事项:使用正则表达式必须加引号。

(2)元字符

表2 常用元字符

元字符 功能
. 匹配任意单个字符,可以是一个汉字
() 使用转义符,只表示\(\)
[]  匹配指定范围内的任意单个字符,示例:[dn]  [0-9]  []  [a-zA-Z]   [:alpha:]
[^]  匹配指定范围外的任意单个字符,示例:[^dn] [^a.z]
[:alnum:] 字母和数字 [0-9] [a-z] [0-9] [a-z]
[:alpha:] 代表任何英文大小写字符,亦即 [A-Z], [a-z]
[:lower:]  小写字母,示例:[[:lower:]],相当于[a-z]
[:upper:]  大写字母 [A-Z]
[[:blank:]] 空白字符(空格和制表符)
[:space:] 包括空格、制表符(水平和垂直)、换行符、回车符等各种类型的空白,比[:blank:]包含的范围广
[:cntrl:] 不可打印的控制字符(退格、删除、警铃...)
[:digit:] 十进制数字
[:xdigit:] 十六进制数字
[:graph:] 可打印的非空白字符
[:print:] [:print:] 可打印字符
[:punct:] 标点符号
\w 匹配单词构成部分,等价于[_[:alnum:]]
\W 匹配非单词构成部分,等价于[^_[:alnum:]]
\S  匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。

(2)表示次数

表3 表示次数

次数字符 功能
* 匹配前面的字符任意次,包括0次,贪婪模式:尽可能长的匹配
.* 任意长度的任意字符,不包括0次,也就是匹配所有
\? 匹配其前面的字符出现0次或1次,即:可有可无
\+ 匹配其前面的字符出现最少1次,即:肯定有且 >=1 次
\{n\}  匹配前面的字符=n次
\{m,n\} 匹配前面的字符至少m次,至多n次
\{,n\} 匹配前面的字符至多n次,<=n 
\{n,\}  匹配前面的字符至少n次

(3)位置锚定

表4 位置锚定

位置字符 功能
^ 表示以什么字符开头的行。
$ 表示以什么字符为结尾的行。
^PATTERN$ 表示用于模式匹配整行 (单独一行  只有PATTERN字符)。
^$ 表示空行。
\< 或 \b  词首锚定,用于单词模式的左侧(连续的数字,字母,下划线都算单词内部)。
\> 或 \b  词尾锚定,用于单词模式的右侧。
\<PATTERN\>   \<PATTERN\>   

(4)分组

()将多个字符捆绑在一起当做一个整体处理

(5)扩展正则表达式

      ① 使用方法

grep  -E选项加正则表达式内容,与正常正则表达式区别在于不用在匹配时添加 \ 

      ② 表示次数

表5 扩展正则表达式表示次数

表示次数 功能
匹配前面字符任意次
? 0或1次
1次或多次
{n} 匹配n次
{m,n} 至少m,至多n次
{,n} 匹配前面的字符至多n次,<=n,n可以为0
{n,} 匹配前面的字符至少n次,<=n,n可以为0

       ③ 表示分组

          () 分组

二、实验

1.通配符

(1)匹配任意一个或多个字符  *

Shell脚本攻略:通配符、正则表达式

(2)匹配一个任意字符  ?

Shell脚本攻略:通配符、正则表达式

(3)匹配列表中任意单个字符 []

Shell脚本攻略:通配符、正则表达式

2.正则表达式

(1)在正则表达式中表示任意单个字符   .

Shell脚本攻略:通配符、正则表达式

Shell脚本攻略:通配符、正则表达式

 Shell脚本攻略:通配符、正则表达式

(2)在正则表达式中表示匹配[ ]中任意一个字符   [ ]

Shell脚本攻略:通配符、正则表达式

(3)在正则表达式中表示匹配[ ]中外的任意单个字符   [^]

 Shell脚本攻略:通配符、正则表达式

 (4) 元字符:

代表任何英文大小写字符 [:alpha:] 

字母和数字 [:alnum:] 

小写字母 [:lower:] 

大写字母 [:upper:]

Shell脚本攻略:通配符、正则表达式

 (5)表示匹配前面字符任意次,包括0次  *     

Shell脚本攻略:通配符、正则表达式

         表示匹配前面字符任意次,不包括0次  .*

Shell脚本攻略:通配符、正则表达式

 (6)表示匹配前面的字符1次或0次,即可有可无  \?

Shell脚本攻略:通配符、正则表达式

 (7)表示匹配前面的字符最少1次  \+

Shell脚本攻略:通配符、正则表达式

 (8)表示匹配前面的字符n次   \{n\}

Shell脚本攻略:通配符、正则表达式

 (9)表示匹配前面的字符最少m次最多n次  \{m,n\}

Shell脚本攻略:通配符、正则表达式

   (10)  表示匹配前面的字符最少m次   \{m,\}

Shell脚本攻略:通配符、正则表达式

   (11) 表示匹配前面的字符最多n次   \{,n\}

Shell脚本攻略:通配符、正则表达式文章来源地址https://www.toymoban.com/news/detail-468924.html

到了这里,关于Shell脚本攻略:通配符、正则表达式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • SHELL 基础 入门(三) Bash 快捷键 命令执行顺序,详解通配符

    SHELL 基础 入门(三) Bash 快捷键 命令执行顺序,详解通配符

    目录 Bash 常用快捷键  输入输出重定向  用法  输出重定向  命令执行顺序  ;  分号 ||  通配符  传统通配符  ? \\\'  *  \\\'  [  ]   [ - ]   [ ^ ] 常用字符  强调 : {  }   生成序列  Ctrl + A    把光标移动到命令行开头 Ctrl + E    把光标移动到命令行尾  Ctrl + D    退出当前

    2024年02月11日
    浏览(31)
  • Linux详解:通配符

    Linux详解:通配符

    Linux是一款开源操作系统,其灵活性和可定制性一直受到开发者的喜爱和追捧。而且,Linux在文件管理方面提供了丰富的功能,例如通配符,它是一种用于匹配文件名的特殊字符。通配符在Linux中可以帮助我们更加方便和快捷地查找和操作文件。本文将介绍Linux中常用的通配符

    2024年02月09日
    浏览(30)
  • 活用 命令行通配符

    活用 命令行通配符

    本文是对 阮一峰老师 命令行通配符教程 [1] 的学习与记录 通配符早于正则表达式出现,可以看作是原始的正则表达式. 其功能没有正则那么强大灵活,而胜在简单和方便. - 字符 切回上一个路径/分支 如图: !! 代表上一个命令, 如图: [Linux中“!\\\"的神奇用法](https://www.cnblogs.com/bian

    2024年02月10日
    浏览(15)
  • 【类型通配符】

    为了表示各种泛型List的父类,可以使用类型通配符 类型通配符:? List?:表示元素类型未知的List,它的元素可以匹配任何的类型 这种带通配符的List仅表示它是各种泛型List的父类,并不能把元素添加到其中 如果不想让List?是任何泛型的父类,只想让它代表某一类泛型List的父

    2024年02月17日
    浏览(37)
  • 泛型的通配符

    泛型的通配符

    类型的上界决定了泛型的范围。 我们发现指定了泛型的上界为数值类Number时,传入Boolean类型就会报错。 如果没有指定类型的边界,可以认可 T extends Object,当指定了某个类型为上界,那么只接受某类型本身和子类型作为E的类型实参 我们要实现一个类去找数组的一个的最大值

    2023年04月08日
    浏览(15)
  • Elasticsearch 通配符查询

    通配符查询(wildcard query) 匹配字段被通配符表达式(没有被分析)匹配的文档。支持的通配符为*(匹配任意字符序列,包括空字符序列)以及?(匹配任意单字符)。注意,此查询可能会很慢,它需要迭代许多字段值。为了防止极慢的通配符匹配,通配符字段值不能以一个

    2024年02月11日
    浏览(15)
  • 44. 通配符匹配(动态规划)

    Problem: 44. 通配符匹配 给你一个输入字符串 (s) 和一个字符模式p ,请你实现一个支持 ‘?’ 和 ‘ ’ 匹配规则的通配符匹配: ‘?’ 可以匹配任何单个字符。 \\\' ’ 可以匹配任意字符序列(包括空字符序列)。 判定匹配成功的充要条件是:字符模式必须能够 完全匹配 输入字符

    2024年02月04日
    浏览(18)
  • 【算法题】44. 通配符匹配

    给你一个输入字符串 (s) 和一个字符模式 (p) ,请你实现一个支持 \\\'?\\\' 和 \\\'*\\\' 匹配规则的通配符匹配: \\\'?\\\' 可以匹配任何单个字符。 \\\'*\\\' 可以匹配任意字符序列(包括空字符序列)。 判定匹配成功的充要条件是:字符模式必须能够 完全匹配 输入字符串(而不是部分匹配)。  

    2024年01月25日
    浏览(12)
  • 16-字符串通配符

    题目 问题描述: 在计算机中,通配符一种特殊语法,广泛应用于文件搜索、数据库、正则表达式等领域。现要求各位实现字符串通配符的算法。 要求: 实现如下2个通配符: *:匹配0个或以上的字符(注:能被*和?匹配的字符仅由英文字母和数字0到9组成,下同) ?:匹配

    2024年02月15日
    浏览(16)
  • 了解java中的通配符“?“

    了解java中的通配符“?“

    目录 通配符的作用         先看一段代码         用通配符\\\"?\\\"后,代码变化         结论 通配符上界  通配符下界 对通配符上下界的注释理解及其练习代码   简记: ?  用于在泛型的使用,即为通配符. 在Java中,通配符(wildcard)主要用于泛型编程,用于表示一个

    2024年02月10日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包