grep命令进阶:正则表达式

2016-01-27 23:23:20 9648

Linux 附带有 GNU grep 命令工具,它支持扩展正则表达式,而且 GNU grep 在所有的 Linux 系统中都是默认有的。Grep 命令被用于搜索定位存储在您服务器或工作站上的任何信息。

(1)正则表达式:正则表达式就是用于匹配每行输入的一种模式,模式是指一串字符序列。如:^new  world1|world2 [^]

    在/etc/passwd目录中搜索nginx,搜索中是区分大小写的;如果想不要区分请添加参数:-i 

     

(2)描点:你可以分别使用 和 符号来正则匹配输入行的开始或结尾。

    (a)查找以apache开头的行

     

    (b)查找以nologin结尾的行

     

    (c)查找仅包含foo的行

    

    (c)查找空行

     

    (d)放在括号内的表达式,即包在 "[:" 和 ":]" 之间的字符类的名字,它表示的是属于此类的所有字符列表。标准的字符类名称如下:

[:alnum:] - 字母数字字符

[:alpha:] - 字母字符

[:blank:] - 空字符空格键符 和 制表符

[:digit:] - 数字: 0 1 2 3 4 5 6 7 8 9

[:lower:] - 小写字母: a b c d e f g h i j k l m n o p q r s t u v w x y z

[:space:] - 空格字符制表符、换行符、垂直制表符、换页符、回车符和空格键符

[:upper:] - 大写字母: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

:显示含有数字的行

 

(3)通配符:可以使用 "." 来匹配单个字符。例子中匹配以 "b" 开头以 "t" 结尾的3个字符的单词:

    如搜寻以g[a-zA-Z0-9]n结尾的行,这里的点代表任意一个字符

     

(4)转义符:去掉特殊符号的属性,如去掉点的通配符特性

     

(5)搜索以”-”符号开头的模式:要使用 -e 选项来搜索匹配 --test-- 字符串,如果不使用 -e 选项,grep 命令会试图把 --test-- 当作自己的选项参数来解析:

     

(6)怎么使用 grep 的“或”匹配?

    如显示/etc/passwd文件含有apache或者nginx词的行

     

(7)怎么使用 grep 的“和”匹配?

    如搜寻具有apache词和nginx词的行

     

(8)怎样使用序列检测:

    egrep co{2}l  #o字母出现两次

    egrep co{2,}l  #o字母至少出现2

提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: