Linux正则表达式grep基础入门

正则表达式是一种符号表示法,用于识别文本模式。Linux处理正则表达式的主要程序是grep。grep搜索与正则表达式匹配的行,并将结果输送至标准输出。

1. grep匹配模式

grep按下述方式接受选项和参数(其中,regex表示正则表达式)

grep [options] regex [files]

其中options主要为下表:

选项   含义   功能描述  
-i   ignore case   忽略大小写  
-v   invert match   不匹配匹配的  
-l   file-with-match   输出匹配的文件名  
-L   file-without-match   输出不匹配的文件名  
-c   count   输出匹配的数目(行数)  
-n   number   输出匹配行的同时在前面加上文件名及在文件名中的行数  
-h   no-filename   抑制文件名的输出  

举例说明

假设有三个文件del1、del2、del3三个文件的内容如下

Linux正则表达式grep基础入门

例子

Linux正则表达式grep基础入门

2. 特殊字符

符号   含义   举例  
^   开始标记   "^abc"满足的例子abc、abcd  
^   非(在[]内)   "[^abc]"满足的例子:ddd、mpd  
$   结束标记   ”abc$”满足的例子abc、mmabc  
.   任意字符   "a.c"满足的例子abc、fapcc  
\<   匹配单词开始   "\<abc"满足的例子abc、abcd  
\>   匹配单词结束   "abc\>"满足的例子abc、pmrabc  
|     "AAA|BBB"满足的例子AAA、BBBpp  

3. 范围

符号   含义   举例  
?   匹配前一个字符0或1次   "abc?"满足的例子ab、mabcd  
*   匹配前一个字符≥0次   "abc*"满足的例子abbb、abcdk  
+   匹配前一个字符≥1次   "abc+"满足的例子abcd、abcccdd  
{}   {m}、{m,n}、{m,}、{,n}分别为匹配前一个字符m次、m到n次、≥m次、≤n次   "abc\{3,5\}"满足的例子abcccc、abcccccc  
[]   []内如果不是范围,选其一;是范围的话,范围内选其一   "m[abc]p"满足的例子acpd;m[1-9]p满足的例子m8pp  
()   将候选的所有元素放在()内,用|隔开   "a(1|2|3)bc"满足的例子a1bc、mba3bcd  

注意:{}在郑则表达式中需要转移,而{}()不需要。    

注意理解{}范围的例子:

Linux正则表达式grep基础入门

4. 标准字符类

字符类   释义  
[:alnum:]   字母和数字,与[A-Za-z0-9]等价  
[:word:]   [:alnum:]加上下划线_  
[:alpa:]   字母,与[A-Za-z]等价  
[:digit:]   数字,与[0-9]等价  
[:xdigit:]   十六进制字符,与[0-9A-Fa-f等价]  
[:blank:]   空格和制表符  
[:graph:]   可见字符,靠扩33~126  
[:lower:]   小写字母  
[:upper:]   大写字母  
[:print:]   可打印字符  
[:space:]   空白字符,等价于[\t\r\n\v\f]  
[:punct:]   标点符号  
[:cntrl:]   ASCII控制码,包括字符0~31以及127  

例子

Linux正则表达式grep基础入门

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/12705.html