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表示给匹配项加上颜色便于观察;

《完》

时间: 2024-11-05 21:47:34

shell下的grep工具的相关文章

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

一.grep相关知识 1.grep      grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. 2.grep工作原理      grep有两种模式:Basic和Extend模式.     在Basic模式下,命令直接grep ,其中的?.+.{}.|.()都被解释为普通字符,如果要使用其的特殊意义,就必须

shell脚本--grep工具

grep工具 shell命令行之所以便捷和它所支持的工具是离不开的,其中grep工具就是一个搜索神器,它可以搜索整个linux系统所有文件中的所有信息. grep的灵活使用离不开正则表达式 正则表达式是一种查找以及字符串替换操作,它只是一个字符串,没有长度的限制,但是一般却表较短.可以被认为是一种轻量级.简介.使用与特定领域的编程语言. 这里主要使用grep工具 grep工具一般用来做两件事,搜索文件和搜索指定字符串 grep常用命令 -a 不要忽略二进制数据. -b 在显示符合范本样式的那一行

Linux下文本搜索工具grep命令使用入门

grep命令入门 如果想通过使用grep命令来实现理想化的文本搜索,对正则表达式的了解是比不可少的.文献1对正则表达式语法做了一个简单的介绍,文献2提供了一个简单的入门.码农也可以自己google一下其他的参考资料.下面就grep命令的使用做个入门级的介绍. 1.1 grep命令的变种 linux下除了grep命令可以完成文本搜索外,还存在egrep,fgrep,rgrep三个命令.这三个命令都是由grep加上一些控制参数演变而来,如egrep=grep -E, fgrep=grep -F, r

centos 下grep工具学习记录

一.grep工具快速查找表 grep标准正则相关元字符表示及其的含义: 形式 说明 . 这是一个英文的点号.表示匹配任意单个字符: [] 表示匹配指定范围内的任意单个字符: [^] 表示匹配指定范围外的任意单个字符: * 表示匹配前面的条目0次或多次: .* 表示匹配任意长度的任意字符: \? 表示匹配前边的条目至多一次,既 0次或1次: \+ 表示匹配前边的条目1次或多次: \{n\} 表示匹配前边的条目n次,多于n次,少于n次都不可行: \{n,\} 表示匹配前边的条目n次或n次以上,既大于

linux下C++开发工具

就C++开发工具而言,与Windows下微软(VC, VS2005等)一统天下相比,Linux/Unix下C++开发,可谓五花八门,各式各样.Emacs, vi, eclipse, anjuta,kdevelop等层出不穷.Windows下,开发工具多以集成开发环境IDE的形式展现给最终用户.例如,VS2005集成了编辑器,宏汇编ml,C /C++编译器cl,资源编译器rc,调试器,文档生成工具, nmake.它们以集成方式提供给最终用户,对于初学者而言十分方便.但是,这种商业模式,直接导致用户

Linux Shell Web超级终端工具shellinabox

Shell是Linux内核应用程序,是指“为使用者提供操作界面”的软件,也是命令解析器,它类似于Windows操作系统DOS下的cmd.exe应用程序.它接收用户命令,然后调用相应的应用程序,用户一般管理Linux服务器都是习惯用putty.Xshell.SecureCRT.secure shell等客户端端工具,但是使用这些客户端都是需要在本地安装后才能使用,如果换其它电脑也是需要重新安装,这样非常使用起来非常麻烦,所以,我们今天就来介绍一块非常方便的shell客户端工具,使用系统自带的浏览器

正则表达式-grep工具常见选项的使用

正则表达式:就是规定一些语法表示字符类.数量限定符.和位置限定符关系,再和普通字符共同来表示一个模式,用某种模式来匹配一类字符串,许多程序设计语言都支持正则表达式匹配 一个正则表达式的三个要素和一些特殊字符 先了解一下grep工具: grep:文本过滤工具.它能使用正则表达式搜索文本,并把匹配的行打印出来.正则表达式在grep中用来查找符合模式的字符串,grep找的是包含某个模式的行. egrep相当于grep -E,表示采用Extended正则表达式语法. grep的正则表达式有Basic和E

LINUX 下 find grep sed awk 的常见基本用法特点

LINUX 下 find grep sed awk 的常见基本用法特点 只为让自己具有更高的水准,这就开始了长达6个月的小白进阶路! 这几天学习linux基础命令有点犯蒙,尤其是对文件查找这块.所有我想把一些我觉得常用的实用的参数项总结下来,大神勿喷哈... 不到之处请大家指教,小女子在此谢过了. 一.find:命令用于查找文件系统中指定的文件,其命令格式为: 1.find pathname -options [ -print  -exec  -ok ... ] (1)find 命令的参数: p

Windows64位安装GPU版TensorFlow 0.12,Power Shell下输入:安装Tensorflow的全教程

推荐使用powershell,只需要在cmd指令窗口输入powershell即可 下载64位Python3.5(一定要3.5!!)可以通过Python 3.5 from python.org 或 Python 3.5 from Anaconda 下载并安装Python3.5.2(注意选择正确的操作系统). 具体教程可以查看Python3.5.2百度经验安装,里面有个细节,自动设置环境变量,不能忘 安装VS2015,如果是2013的后面要加个插件,这是后话 为了使用国内镜像加速pip安装,需要如下