最近用Bash写了不少程序,个人认为bash的模式匹配比较让人头疼,特摘录相关说明如下,供朋友们查找。
| 功能 | 示例 | 匹配对象 |
| 行首定位符 | /^man/ | 匹配所有以man开头的行 |
| 行尾定位符 | /man$/ | 匹配所有以man结尾的行 |
| 匹配单个字符 | /m..n/ | 匹配包含一个m,后跟两个字符,再跟一个n的行 |
| 匹配0个或多个重复的位于星号前的字符 | /*man/ | 匹配包含跟在0个或者多个空格的模式的man的行 |
| 匹配一组字符中任一个 | /[Mm]an/ | 匹配包含Man或man的行 |
| 匹配指定范围内的一个字符 | /[A-Z]an/ | 匹配后面跟着an的一个A至Z之间的字符 |
| 匹配不在指定组内的字符 | /[^A-Z]/ | 匹配不在范围A至Z之间的任意一个字符 |
| 用来转义元字符 | /man\./ | 匹配包含man,后面跟一个点(如果不转义的话则是匹配一个任意字符) |
| 词首定位符 | /\<man/ | 匹配包含以man开头的词的行(vi和grep支持) |
| 词首定位符 | /man\>/ | 匹配包含以man结尾的词的行(vi和grep支持) |
| 匹配稍后将要使用的字符的标签 | s/\(man\) acle/\1age/g | 最多可以使用9个标签,模式中最左边的标签是第一个。例如,模式man被保存为标签1,用\1表示。左边这个例子中,查找manacle,把它替换成manage(sed、vi和grep支持) |
| 字符x的重复出现:m次、至少m次、至少m次且不超过n次 | n\{3,5\} | 匹配包含3~5个连续的字母n的行 |
本文详细介绍了Bash中常用的模式匹配方法,包括行首定位符、行尾定位符、匹配单个字符等,并通过示例解释了每种匹配方式的应用场景。
558

被折叠的 条评论
为什么被折叠?



