grep 及 正则表达式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了grep 及 正则表达式相关的知识,希望对你有一定的参考价值。

一、grep概念

     grep,即搜索正则表达式,也就是说grep简单来讲就是用来搜索匹配字符的。


二、正则表达式:

(1)正则表达式遵循的几个重复的操作

- ?                             最多匹配一次

- *                             匹配零次或者任意多次

- +                            匹配一次以上

- {n}                          匹配n次

- {n,}                         最少匹配n次

- {,m}                        最多匹配m次

- {n,m}                      匹配n到m次

(2)常用的正则表达式栗子:

^                               行首

$                                行尾

[  ]                              匹配出现的任意一个   

^user$                       只包含user

[tty]$                          以tty结尾的行

^ [ ^ l ]                      排除关联目录的目录列表

[ . * 0 ]                        0之前或之后加任意字符

[ ^ $ ]                        空行

[ ^ . * $ ]                    匹配行中任意字符串

^ . . . . . . $                 包括6个字符的行

\ ^ q                          以^ q开始行

^ . $                           仅有一个字符的行

^\.[0-9][0-9]              以一个句点和两个数字开始的行

[ 0 - 9 ] \ { 2 \ } - [ 0 - 9 ] \ { 2 \ } - [ 0 - 9 ] \ { 4 \ }      日期格式d d - m m - y y y y

[ 0 - 9 ] \ { 3 \ } \ . [ 0 - 9 ] \ { 3 \ } \ . [ 0 - 9 ] \ { 3 \ } \ . [ 0 - 9 ] \ { 3 \ }     I P地址格式

[A-Za-z]*                     匹配所有单词


三、常用的 grep 选项

(1)-c 只输出匹配行的计数。

技术分享技术分享

(2)-i 不区分大小写(只适用于单字符)。

技术分享技术分享

(3)-n 显示匹配行及行号。

技术分享技术分享

(4)-s 不显示不存在或无匹配文本的错误信息。

技术分享

(5)-v 显示不包含匹配文本的所有行。

技术分享技术分享

file1是file拷贝出来的,即cp file file1

(6)-l 查询多文件时只输出包含匹配字符的文件名。

技术分享技术分享

(7)-h 查询多文件时不显示文件名。

技术分享

(8)多次过滤:

技术分享技术分享

(9)使用 grep 匹配“与”或者“或”模式

grep 命令加- E参数,表示允许使用扩展模式匹配。

技术分享技术分享

(10) -w 搜索整个词,而不是词中的部分字串。

技术分享技术分享

(11)-A 显示匹配行之后的N行

技术分享技术分享

-B 显示匹配行之前的N行

技术分享技术分享

-C 显示匹配行前后的N行

技术分享技术分享

(12)-r 递归搜索全部的文件

用法:$ grep -r "file" *

(13)-o 只显示匹配的字串(当使用正则表达式时比较有用处)

技术分享技术分享

(14)-b 显示匹配的位置

技术分享技术分享

注意: 以上输出显示的不是行内的位置,而是整个文件中的字节byte位置

(15)--color将搜索到的字符予以颜色加以标识,易于辨认

技术分享技术分享

(16)-q 静默模式,不输出,在shell脚本中经常用到

技术分享技术分享


四、grep中使用正则表达式

(1). 匹配任意单个字符

技术分享技术分享

(2)*匹配前面一个字符任意次(可以是0次)

技术分享技术分享

(3).* 匹配任意长度的任意字符(贪婪模式)

技术分享技术分享

(4)[ ] 指定范围内的任意单个字符

         [^]指定范围内之外的字符

技术分享

(5)X\{m,n\} X出现大于m次,小于n次

技术分享技术分享

(6)X\{m,\} X出现大于m次,无上限

技术分享技术分享

(7)? 匹配其前面的字符0次或一次(-E,使用扩展表达式)

技术分享

(8)锚定符 ^ 锚定行首(行首匹配)

技术分享技术分享

(9)$ 锚定行尾(行尾匹配)

技术分享

(10)^$ 空白行

技术分享技术分享


本文出自 “GREEN” 博客,请务必保留此出处http://green906.blog.51cto.com/10697569/1793887

以上是关于grep 及 正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

grep及扩展正则表达式

grep及正则表达式

grep及正则表达式

关于 grep及正则表达式

grep命令及正则表达式

grep文本查看工具及正则表达式