shell下的grep工具

Posted

tags:

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

一. grep

    grep(Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,将匹配的行打印出来,但是并不影响原文件的内容;并且通过返回值来通知搜索结果,如果命令的退出码为0则表示搜索成功返回值为1则表示搜索不成功如果搜索的文件不存在,则会返回2;因此利用这些返回值就可以进行相应的文本处理工作。

    对于grep来说,其工作模式有两种:一种是Basic模式,在该模式下,其命令参数的正则表达式中对于字符‘()‘、‘{ }‘、‘|‘、‘?‘、‘+‘这五种字符都只是取其普通含义,如果需要使用其特殊含义需要加上转义字符‘\‘来对其进行转义,另外,如果不想进行转义,加上-E选项将其改为Extended模式就可以了;而对于另外一种Extended模式,表示是grep的扩展,这些字符都被解释为代表的特殊含义,而同样的,如果想要取其普通的字面意思,也可以使用转义字符‘\‘来转义;使用egrep命令相当于使用grep加上-E选项;



二. 正则表达式

    既然grep是用来进行文本搜索的,如果对于要搜索的内容很明确,那么就可以直接在其后跟上明确的一串字符,但是如果有时候对于要搜索的内容并不是很具体,也就是需要在指定的文件中找出满足某个或者某些条件的内容,比如我需要找出所有满足正确IP地址的一串字符,格式当然就如“XXX.XXX.XXX.XXX”,那么就需要交给grep一个‘条件’,这个条件就告诉grep,我需要什么样的内容你都给我找出来,而这个‘条件’中,使用一些特殊语法来表示字符类、数量限定符和位置限定符,然后用这些特殊语法和普通字符一起表示一个模式,这就是正则表达式


字符类表示某一个字符范围中的某一个字符;

技术分享

如下举例:

技术分享


数量限定符表示对于字符的数量限定;

技术分享

技术分享

如下举例:

技术分享

技术分享


位置限定符表示对于字符出现位置的一个限定;

技术分享

如下举例:

技术分享


其他特殊字符:

技术分享

如下举例:

技术分享



三. grep常用命令选项

grep用法:grep [选项]... PATTERN [FILE]...

在每个FILE或是标准输入中查找PATTERN,默认的PATTERN是一个基本的正则表达式(缩写为BRE);


如下栗子都使用文件file:

技术分享


-G 表示PATTERN是一个基本的正则表达式,默认就是这种模式;

-E 表示PATTERN是一个可扩展的正则表达式,也就是对于‘?+|{}()’这五类字符都取其特殊含义;

技术分享


-F 表示正则表达式不可用,PATTERN是一组用断行符分隔的定长字符串;

技术分享


-f 表示从FILE中取得PATTERN,也就是指定匹配文件,让grep查找符合匹配模式的文件内容;

技术分享


-i 忽略大小写的匹配模式;

技术分享


-w 表示PATTERN仅完全匹配字词,也就是只将PATTERN看做一个完整的单词来匹配;

技术分享


-x 强制PATTERN仅完全只匹配一行,也就是PATTERN满足为一行的内容;

技术分享


-s 不显示没有匹配项或者文件的错误信息;

技术分享


-v 显示出不满足匹配条件的所有内容;

技术分享


-V 显示版本号;

技术分享


-m 表示从输入中匹配的最大数;

技术分享


-b 打印出输出匹配行第一个字符的位编号;

技术分享


-n 显示匹配行及其行号;

技术分享


-H 表示搜索多个文件时,前缀显示文件名;

-h 表示搜索多个文件时,不显示文件名前缀;

技术分享


-o 只显示匹配的内容;

技术分享


-q 匹配成功与否,都不显示任何内容,只通过状态码来告知匹配结果

技术分享


-D 对于设备比如管道或者套接字的处理,如read和skip;

-d 对于文件或文件夹的处理,如read、recurse、skip;

技术分享


-r -R 递归调用;

技术分享


-l 只显示匹配成功的文件名;

-L 只显示未匹配成功的文件名;

技术分享


-c 统计出匹配的行数;

技术分享


-A 打印出匹配行及其前面特定的行;

-B 打印出匹配行及其后面特定的行;

-C 打印出匹配行及其前后各自特定的行;

技术分享


当然,如果想要查看grep其他的一些更为具体的命令的选项和使用,通过grep --help命令就可以查看;--color表示给匹配项加上颜色便于观察;



《完》

本文出自 “敲完代码好睡觉zzz” 博客,请务必保留此出处http://2627lounuo.blog.51cto.com/10696599/1792984

以上是关于shell下的grep工具的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本--grep工具

shell脚本---grepawksed工具

shell下正则表达式与其工具grep

Linux使用之grep,shell脚本(一)

shell脚本 grep cut tee diff

shell --- grep 命令详解