Linux Bash之正则表达式
首先注意:正则表达式与通配符是完全不同的概念。通配符(wildcard)代表的是 Bash 操作接口的一个功能,而正则表达式是一种字符串处理的表示方式,一定要区分开来。
正则表达式(Regular Expression)是通过一些特殊字符的排列,用以查找/替换/删除一行或多行文字字符串。
也即是说,正则表达式是用在字符串处理上的一项表达式,它不是一个工具程序,而是一个字符串处理的标准依据,如果我们想以正则表达式的方式处理字符串,就要使用支持正则表达式的工具程序,如 vim、sed、awk、grep 等。
A regular expression is a pattern that describes a set of strings.
regexp are constructed analogously to arithmetic expressions, by using various operators to combine smaller expressions.grep understands three different regexp syntax: “basic” (BRE), “extended” (ERE) and “perl” (PCRE).
In GNU grep, there is no difference in available functionality between basic and extended syntaxes.首先介绍第一部分,基本正则表达式的基本组成部分,见表1-1,如果想要在大部分机器上都可以使用的可移植脚本,只使用基本组成部分是一个好的选择。
基本正则与扩展正则的区别在于,基本正则中,字符(? + | {} () )被解释为普通字符,也即其字面意思,如果要使用其对应的特殊含义,如使用 () 表示选项列表, | 表示选项等,需要加反斜杠 \ 转义。
而在扩展正则中,默认字符( ? + | {} () )被解释为特殊含义,如果要使用其对应的普通字符含义,需要加反斜杠 \ 转义。

然后来看第二部分,对于 Shell 中的 POSIX 字符,如表1-2所示,基本上可以根据符号猜出其含义,即所谓望文生义,比较容易记忆。这部分对基本正则,扩展正则以及 Perl 格式的正则表达都是一样的,特定的符号特定的含义。
Such certain named classes of characters are predefined within bracket expressions. Their names are self explanatory.

接下来是第三部分,元字符及其含义和使用示例,如表1-3所示,这里也只是给出基本正则和扩展正则中支持的元字符,对于Perl风格的正则能支持的更多的字符在稍后的部分展示。
The symbol \b matches the empty string at the edge of a word, and \B matches the empty string provided it's not at the edge of a word.
The symbol \w is a synonym for [_[:alnum:]] and \W is a synonym for [^_[:alnum:]].
The symbols \< and \> respectively match the empty string at the beginning and end of a word.

第四部分,对于扩展正则以及 Perl 风格的正则,其所支持的功能更多更复杂,使用起来也是更方便,其在基本正则的基础上又有一些新的表示和约定,如表1-4所示。

最后一部分, Perl 风格的正则相对于基本正则和扩展正则而言能支持更丰富的元字符,如表1-5所示,有了更多的定义和用法。

参考资料
[1] Shell正则表达式
[2] ASCII
Linux Bash之正则表达式的更多相关文章
- Linux Bash脚本编程语言中的美学与哲学
我承认,我再一次地当了标题党.但是不可否认,这一定是一篇精华随笔.在这一篇中,我将探讨Bash脚本语言中的美学与哲学. 这不是一篇Bash脚本编程的教程,但是却能让人更加深入地了解Bash脚本编程,更 ...
- Linux Bash文本操作之sed篇其二
上一篇总结了sed的基础应用(Linux Bash文本操作之sed篇其一),内容实在有够多,这里再对稍微高级一些的用法做一个整理,以方便使用时查阅. 查看文本内容 示例1表示在第一到第四行匹配到的行后 ...
- 转: windows 10使用原生linux bash命令行
转: https://www.zybuluo.com/pandait/note/337430 windows 10使用原生linux bash命令行 linux bash windows-10 第一时 ...
- Linux Bash代码 利用for循环实现命令的多次执行
Linux Bash代码 [yuanhao15@lu01 libsvm-rank-2.81]$ for ((i=0; i<=19; i++)) do ./svm-train -s 5 -c 10 ...
- linux BASH shell设置字体与背景颜色
linux BASH shell下设置字体及背景颜色的方法. BASH shell下设置字体及背景颜色 echo -e "\e[31mtest\e[41m" \e[30m 将字 ...
- Linux:-bash: ***: command not found
Linux:-bash: ***: command not found,系统很多命令都用不了,均提示没有此命令. 突然之间linux很多命令都用不了,均提示没有此命令. 这应该是系统环境变量出现了问题 ...
- Linux Bash命令关于程序调试详解
转载:http://os.51cto.com/art/201006/207230.htm 参考:<Linux shell 脚本攻略>Page22-23 Linux bash程序在程序员的使 ...
- 禁用Linux bash rm --force
防止无意的Linux bash rm --force 二.禁用rm -rf 因为rm -rf 删除文件的时候,经常会不小心将系统文件或者多个有用的目录删除掉.有两种方法:1,每次删除都用-i(inte ...
- linux bash关闭标准输出1(exec 1<&-)后重新打开
linux bash shell的再次学习. 文件描述符: stdin,stdout 和 stderr 的文件描述符分别是 0,1 和 2(一个文件描述符说白了就是文件系统为了跟踪这个打开的文件而分配 ...
随机推荐
- Code Helper占用大量CPU和内存
项目架构: React+TS+DVA 设备及软件: 设备:Mac 软件:VSCode 场景: 在Mac中使用VSCode运行时发现项目编译非常卡顿,时间长达五六分钟以上,并且项目启动后访问页面,页面也 ...
- 运用python实现冒泡排序算法
冒泡排序,一个经典的排序算法,因在算法运行中,极值会像水底的气泡一样逐渐冒出来,因此而得名. 冒泡排序的过程是比较两个相邻元素的大小,然后根据大小交换位置,这样从列表左端开始冒泡,最后最大值会依次从右 ...
- 23种GoF设计模式的分类
GoF设计模式一共有23个.一般可以按目的和作用范围来进行划分,具体划分方法如下: 第一,这些模式按目的(即完成什么样任务)来划分为创建型.结构型和行为型这三种模式: 创建型:用来创建对象.单例.原型 ...
- 12、pytest -- 缓存:记录执行的状态
目录 1. cacheprovider插件 1.1. --lf, --last-failed:只执行上一轮失败的用例 1.2. --ff, --failed-first:先执行上一轮失败的用例,再执行 ...
- 使用scrapy-redis搭建分布式爬虫环境
scrapy-redis简介 scrapy-redis是scrapy框架基于redis数据库的组件,用于scrapy项目的分布式开发和部署. 有如下特征: 分布式爬取 您可以启动多个spider工 ...
- JS中的同步异步编程
首先我们先看看同步与异步的定义,及浏览器的执行机制,方便我们更好地理解同步异步编程. 浏览器是多线程的,JS是单线程的(浏览器只分配一个线程来执行JS) 进程大线程小:一个进程中包含多个线程,例如 ...
- 阿里云上万个 Kubernetes 集群大规模管理实践
点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击上方图片即可下载! 作者 | 汤志敏,阿里 ...
- Nginx配置详细解析(全)
一.nginx.conf文件结构 (1)共三部分:由全局块.events块.http块组成.http块又包含http全局块.server块:server块由多个location块组成. (2)一般情况 ...
- HIT2019视听觉信号处理视觉实验一
写在前面 HIT大三上学期视听觉信号处理课程中视觉部分的实验一,经过和学长们实验的对比发现每一级实验要求都不一样,因此这里标明了是2019年秋季学期的视觉实验一. 由于时间紧张,代码没有进行任何优化, ...
- MySql CPU彪高到百分之1000的排查思路
You need to enable JavaScript to run this app. 原文内容来自于LZ(楼主)的印象笔记,如出现排版异常或图片丢失等情况,可查看当前链接:https:// ...