linux常用正则命令 linux shell 正则表达式( 三 )


正则表达式(Regular Expression)是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符及这些字符的特定组合,组成一个“规则字符串” , 这个字符串用来表达对字符串的一种过滤逻辑 。
正则表达式基本上是一种表示法,只要程序支持这种表示法,该程序就可以用来作为正则表达式的字符串处理之用 。如vi、grep、awk、sed等程序支持正则表达式,所以可以使用正则表达式的特殊字符来进行字符串的处理 。但例如cp、ls等命令并不支持正则表达式,所以只能用自己的通配符 。
正则表达式依照 不同的严谨度 分为:基础正则表达式和扩展正则表达式 。
注意!
grep是一种强大的文本搜索工具,可以使用 正则表达式匹配模式 查找文件里符合条件的字符串,并打印出来 。
有点类似于WORD里的查找功能 。
grep支持三种正则表达式语法:Basic、Extended和perl兼容 。如果没有提供正则表达式类型,grep将搜索模式解释为基本的正则表达式 。要将模式解释为扩展正则表达式,请使用-E 。
查看grep的帮助文档 , 如下
基本用法
grep [OPTION]... PATTERN [FILE]...
高级用法
grep [-A] [-B] [--color=auto] "查找字符" [模式] [文件]
常用参数
首先通过cat命令查看samples.txt的内容,如下图
如果想检索以K为行首的行,通过以下命令即可得到
【linux常用正则命令 linux shell 正则表达式】 如果想检索以Z为行尾的行,通过以下命令即可得到
如果想检索三个字符其中前面为K,后面为D中间字符,为任意字符,通过以下命令即可得到
参考资料
Linux正则表达式与通配符 正则表达式:在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串 。在很多文本编辑器或其他工具里,正则表达式通常被用来检索或替换那些符合某个模式的文本内容 。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的 。
只有掌握了正则表达式,才能全面地掌握 Linux 下的常用文本工具(例如:grep、egrep、GUN sed、 Awk 等) 的用法
grep、sed、awk天然支持正则
grep -v代表反选,反向选择匹配到的内容
grep -E代表使用扩展正则
grep -P代表使用Perl正则
sed -r 代表使用扩展正则
正则表达式分为三类(man grep可以看到,分别是basic RegExs,extended RegExs , perl RegExs)
1、基本的正则表达式(Basic Regular Expression 又叫 Basic RegEx简称 BREs)
2、扩展的正则表达式(Extended Regular Expression 又叫 Extended RegEx 简称 EREs)
3、Perl 的正则表达式(Perl Regular Expression 又叫 Perl RegEx 简称 PREs)
b. 处理过程:查找文本文件中是否包含要查找的 “关键字”(关键字可以是正则表达式)  , 默认返回匹配的该行的内容
c. grep|egrep处理文件时,按行处理 |
| sed | sed | sed -r | - | a. 处理对象:文本文件
b.处理操作:对文本文件的内容进行 查找、替换、删除、增加等操作
c. sed 在处理文本文件的时候,按行处理 |
| awk | - | awk | - | a. awk 处理的对象:文本文件
b. awk 处理操作:主要是对列进行操作 |
注意:egrep 或 sed -r 默认使用扩展正则表达式(EREs),一般特殊字符({})可以不转义
grep -E 以及egrep(Extend Regular Expression)
Linux通配符和三剑客的正则表达式是不一样的,因此,代表的意义也有较大的区别。
通配符一般用户命令行bash环境,而linux正则表达式用于grep, sed, awk场景 。

推荐阅读