我们一起来学Shell - 初识shell


我们一起来学Shell - shell的变量


我们一起来学Shell - shell的条件判断


我们一起来学Shell - shell的循环控制


我们一起来学Shell - shell的数组


我们一起来学Shell - shell的函数


我们一起来学Shell - shell的并发及并发控制


我们一起来学Shell - 正则表达式

什么是正则表达式

  • 正则表达式(Regular Expression,通常简称为 regex 或 RE)是一种字符表达方式,可以用它来查找匹配特定准则的文本。在许多编程语言中都有用到正则表达式,常用它来实现一些复杂的匹配。

  • 正则表达式是对字符串进行操作的一种逻辑公式,即用事先定义好的的一些特定字符以及这些特定字符的组合,组成一个有一定规则的字符串(Regular Expression),使用这个有一定规则的字符串来表达对字符串的一种过滤逻辑。正则表达式被广泛应用于Linux和许多其他编程语言中,而且不论在哪里,其基本原理都是一样的。

  • 正则表达式是由两个基本组成部分所建立:一般字符特殊字符一般字符是指没有任何特殊意义的字符特殊字符,常称为元字符 (metacharacter),或 meta 字符,正则表达式将匹配被查找行中任何位置出现的相同模式。在正则表达式中,元字符是最重要的概念。在某些情况下,特殊字符也可被视为一般字符(使用转义符 \ 进行转义)

  • POSIX 有两种风格的正则表达式,基本正则表达式(BRE)扩展正则表达式(ERE)。这两种风格的正则表达式在一些字符含义上有细微的差距。以常用的 grep 指令来说,grep 指令默认支持的是 BRE若要使用 ERE 进行匹配,可以使用 -E 选项

正则表达式元字符

字符 BRE/ERE 含义
. BRE&ERE 匹配任意单个字符(除字符串结束符 NUL)
^ BRE&ERE 匹配行首,如 ^abc,匹配以 abc 开头的字符串
$ BRE&ERE 匹配行尾,如 abc$,匹配以 abc 结尾的字符串
* BRE&ERE 匹配 0 个或任意多的单个字符,前置字符可以是正则表达式
+ ERE 匹配前面正则表达式的 1 个或多个实例
ERE 匹配前面正则表达式的 0 个或 1 个实例
[...] BRE&ERE 方括号表达式,匹配方括号内的任一字符,常配合 - 符使用,表示匹配一个连续的范围。 ^ 字符作为方括号内的第一个字符表示匹配不在方括号内的任意字符
- BRE&ERE 连字符,在方括号表达式中使用,表示连续字符的范围(范围会因 locale 而有所不同,因此不具可移植性)
{n,m} ERE 区间表达式,表示匹配在它前面的字符 n 到 m次。其中,n 与 m 的值必须介于 0-RE_DUM _MAX(含)之间,后者最小值为255
{n} ERE 表示匹配在这之前的字符 n 次
\{n,m\} BRE 功能同 {n,m}
\{n\} BRE 功能同{n}
\ BRE&ERE 转义符
() ERE 匹配位于方括号括起来的正则表达式群
\( \) BRE 将( 与 )\ 之间的模式保存在特殊的“保留空间”中,最多可以存储9个,可以通过后续的转义序列 \n 来匹配保留空间中的模式
\n BRE 与 ( ) 结合起来使用,\1匹配第一个子模式、 \2匹配第二个,最多到 \9
\| ERE 匹配位于 | 符号前或后的正则表达式

正则表达式应用举例

字符 用处
.* 所有字符
^[^] 非字符组内的字符开头的行
[a-z] 小写字母
[A-Z] 大写字母
[a-Z] 小写和大写字母
[0-9] 数字
\< 单词头 单词一般以空格或特殊字符做分隔,连续的字符串被当做单词
\> 单词尾

POSIX 方括号表达式

  • 为了配合非英语的环境,POSIX 标准强化其字符集范围的能力 (如 [a-z]),以匹配非英文字母字符。POSIX 使用方括号表达式 […] 来表示一个范围值,在方括号表达式里,除了字面上的字符外(a、b、c等),另有额外的组成部分,包括:
  1. 字符集:以 [: ... :] 将关键字组合括起来的 POSIX 字符集,关键字描述各种不同的字符集;

  2. 排序符号:排序符号将多个字符序列视为一个单位(如,locale 中将 ch 这两个字符视为一个单位),它使用 [..] 将字符组合括起来,在系统所使用的特定 locale 上各有其定义;

  3. 等价字符集:等价字符集列出的是应视为等值的一组字符,它由取自于 locale 的名字元素组成,以 [==] 括住。

POSIX 字符集列表:

类别 匹配字符
[:alnum:] 数字字符
[:alpha:] 字母字符
[:blank:] 空格与定位符
[:cntrl:] 控制字符
[:digit:] 数字字符
[:graph:] 非空格字符
[:lower:] 小写字母字符
[:upper:] 大写字母字符
[:space:] 空白符
[:print:] 可显示的字符
[:punct:] 标点符号字符
[:xdigit:] 十六进制数字

我们一起来学Shell - 正则表达式的更多相关文章

  1. 我们一起来学Shell - shell的并发及并发控制

    文章目录 bash的并发 未使用并发的脚本 简单修改 使用wait命令 控制并发进程的数量 文件描述符 查看当前进程打开的文件 自定义当前进程用描述符号操作文件 管道 我们一起来学Shell - 初识 ...

  2. 我们一起来学Shell - shell的函数

    文章目录 定义函数 执行不带参数的函数 执行带参数的函数 函数的执行总结 我们一起来学Shell - 初识shell 我们一起来学Shell - shell的变量 我们一起来学Shell - shel ...

  3. 我们一起来学Shell - shell的数组

    文章目录 什么是数组 数组中常用变量 数组的定义 小括号定义数组变量 小括号加键值对定义数组变量 分别定义数组变量 动态地定义数组变量 数组赋值的切片 遍历数组 关联数组 我们一起来学Shell - ...

  4. 我们一起来学Shell - shell的循环控制

    文章目录 Shell 循环之 for 语句 Shell 循环之 while 语句 Shell 循环之 until 语句 Shell 循环控制 break指令 continue 指令 exit 指令 s ...

  5. 我们一起来学Shell - shell的条件判断

    文章目录 Shell 条件测试语法 符号说明 Shell 测试表达式 文件测试表达式 字符串测试表达式 整数操作符 逻辑操作符 测试表达式的区别总结 Shell 条件判断之if语句 单分支 IF 条件 ...

  6. 我们一起来学Shell - 初识shell

    文章目录 Shell 的分类 `bash` `csh` `ksh` `tcsh` `sh` `nologin` `zsh` Shell 能做什么 bash 环境变量文件 `/etc/profile` ...

  7. Shell 正则表达式详解

    Shell 正则表达式 什么是正则表达式? 正则表达式在每种语言中都会有,功能就是匹配符合你预期要求的字符串. 为什么要学正则表达式? 在企业工作中,我们每天做的linux运维工作中,时刻都会面对大量 ...

  8. linux shell 正则表达式(BREs,EREs,PREs)差异比较

    linux shell 正则表达式(BREs,EREs,PREs)差异比较 则表达式:在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符 串的单个字符串.在很多文本编辑器或其他工具里 ...

  9. linux shell 正则表达式(BREs,EREs,PREs)的比较

    原文 :   linux shell 正则表达式(BREs,EREs,PREs)差异比较 在使用 linux shell的实用程序,如awk,grep,sed等,正则表达式必不可少,他们的区别是什么 ...

随机推荐

  1. Python常用功能函数系列总结(六)

    本节目录 常用函数一:词云图 常用函数二:关键词清洗 常用函数三:中英文姓名转换  常用函数四:去除文本中的HTML标签和文本清洗 常用函数一:词云图 wordcloud # -*- coding: ...

  2. javascript实现数字整数位每三位一个逗号分隔

    Number(1234567).toLocaleString(); //结果"1,234,567" Number(123456789).toLocaleString()//结果&q ...

  3. php中使用CURL之php curl详解

    curl是个什么东西?简单地说就是,curl是一个库,能让你通过URL和许多不同种的服务器进行勾搭.搭讪和深入交流,并且还支持许多协议.并且人家还说了curl可以支持https认证.http post ...

  4. 小白也能看懂的Redis教学基础篇——做一个时间窗限流就是这么简单

    不知道ZSet(有序集合)的看官们,可以翻阅我的上一篇文章: 小白也能看懂的REDIS教学基础篇--朋友面试被SKIPLIST跳跃表拦住了 书接上回,话说我朋友小A童鞋,终于面世通过加入了一家公司.这 ...

  5. [Windows]为windows系统鼠标右键添加软件和图标

    转载自 https://blog.csdn.net/p312011150/article/details/81207059 一.打开注册表 首先打开windows的注册表,当然了,我个人倾向于 (1) ...

  6. wordcount报错:org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist:

    Exception in thread "main" org.apache.hadoop.mapreduce.lib.input.InvalidInputException: In ...

  7. gin中multipart/urlencoded绑定

    package main import ( "fmt" "github.com/gin-gonic/gin" "net/http" ) ty ...

  8. UncLutter

    在 Mac 上「速记」的正确姿势:Unclutter 现代人的大脑,每天都会被大量有用,或无用的东西充斥着,过多「思想垃圾」的沉重负担就容易导致失忆.也就是说,你很可能会记得一个无关紧要,但给你留下深 ...

  9. 【webpack4.0】---webpack的基本使用(三)

    一.webpack-dev-server 1.安装 cnpm   install  webpack-dev-server  -D 2.作用 开启一个web服务,监听文件的变化并自动刷新网页,做到实时预 ...

  10. Oracle AWR报告采样分析

    DB time可以用来判断数据库整体是否繁忙,如果Elapsed*CPU个数小于DB time,代表数据库整体比较繁忙,CPU负载会比较高. Report Summary分为8个部分,最主要的是loa ...