全面搜索正则表达式(Global search regular expression(RE) ,GREP)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

Unix/Linux的grep家族包括grep、egrep和fgrep,其中egrep和fgrep的命令跟grep有细微的区别,egrep是grep的扩展,支持更多的re元字符, fgrep是fixed grep或fast grep简写,它们把所有的字母都看作单词,正则表达式中的元字符表示其自身的字面意义,不再有其他特殊的含义,一般使用比较少。

目前Linux操作系统默认使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。其语法格式及常用参数详解如下:

1)Grep工具的语法格式:

grep  -option(参数) word(字符) file(文件);

Option参数:-a(文本形式)、-c(统计)、-i(忽略大小写)、-v(反选|排除)、-n(行号)、-o(打印匹配词)、-E(扩展参数|egrep)、-A(after匹配之后行)、-B(before匹配之前行)、-C(context 匹配前和后的行)、-r(递归目录搜索)等;

File文件:匹配的对象,从什么地方进行匹配、文本文件、输出结果;

主要参数
[options]主要参数:
-a       不要忽略二进制数据。
-An 除了显示符合范本样式的那一行之外,并显示该行之后n行的内容。
-Bn 在显示符合范本样式的那一行之外,并显示该行之前n行的内容。
-c 只输出匹配行的计数。
-Cn 除了显示符合范本样式的那一行之外,并显示该列之前后的内容。
-d <进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
-e <范本样式> 指定字符串作为查找文件内容的范本样式。 制动多个匹配样式:
-E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
-f <范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。
-F 将范本样式视为固定字符串的列表。
-G 将范本样式视为普通的表示法来使用。
-h 在显示符合范本样式的那一行之前,不标示该列所属的文件名称。
-H 在显示符合范本样式的那一行之前,标示该列的文件名称。
-i 忽略字符大小写的差别。
-l 列出文件内容符合指定的范本样式的文件名称。
-L 列出文件内容不符合指定的范本样式的文件名称。
-n 显示匹配行及 行号。
-q 不显示任何信息。
-R/-r 递归的对目录下的所有文件(包括子目录)进行 grep-s 不显示不存在或无匹配文本的错误信息。
-v 反转查找。
-V 显示版本信息
-w 只显示全字符合的列。
-x 只显示全列符合的列。
-y 此参数效果跟“-i”相同。
-o 只输出文件中匹配到的部分

2)通配符类型详解

*               0个或者多个字符、数字;
? 匹配任意一个字符;
# 表示注解;
| 管道符号;
; 多个命令连续执行;
& 后台运行指令;
! 逻辑运算非;
[ ] 内容范围,匹配括号中内容;
{ } 命令块,多个命令匹配。

3)正则表达式主要参数:

*               前一个字符匹配0次或多次;
. 匹配除了换行符以外任意一个字符;
.* 代表任意字符;
^ 匹配行首,即以某个字符开头;
$ 匹配行尾,即以某个字符结尾;
\(..\) 标记匹配字符;
[] 匹配中括号里的任意指定字符,但只匹配一个字符;
[^] 匹配除中括号以外的任意一个字符;
\ 转义符,取消特殊含义;
\< 锚定单词的开始;
\> 锚定单词的结束;
{n} 匹配字符出现n次;
{n,} 匹配字符出现大于等于n次;
{n,m} 匹配字符至少出现n次,最多出现m次;
\w 匹配文字和数字字符;
\W \w的反置形式,匹配一个或多个非单词字符;
\b 单词锁定符;
\s 匹配任何空白字符;
\d              匹配一个数字字符,等价于[0-9]。

4)常用GREP工具企业演练案列:

grep  -c "test"          jfedu.txt                       统计test字符总行数;
grep -i "TEST" jfedu.txt 不区分大小写查找TEST所有的行;
grep -n "test" jfedu.txt 打印test的行及行号;
grep -v "test" jfedu.txt 不打印test的行;
grep "test[53]" jfedu.txt 以字符test开头,接5或者3的行;
grep "^[^test]" jfedu.txt 显示输出行首不是test的行;
grep "[Mm]ay" jfedu.txt 匹配M或m开头的行;
grep "K…D" jfedu.txt 匹配K,三个任意字符,紧接D的行;
grep "[A-Z][9]D" jfedu.txt 匹配大写字母,紧跟9D的字符行;
grep "T\{2,\}" jfedu.txt 打印字符T字符连续出现2次以上的行;
grep "T\{4,6\}" jfedu.txt 打印字符T字符连续出现4次及6次的行;
grep -n "^$" jfedu.txt 打印空行的所在的行号;
grep -vE "#|^$" jfedu.txt 不匹配文件中的#和空行;
grep --color -ra -E "db|config|sql" * 匹配包含db或者config或者sql的文件;
grep --color -E "\<([0-9]{1,3}\.){3}([0-9]{1,3})\>" jfedu.txt 匹配IPV4地址。
ifconfig|grep -w inet
ifconfig|grep netmask
ifconfig|grep 255
ifconfig|grep -E "192|127"

grep工具的更多相关文章

  1. grep工具及正则表达式

    正则表达式和通配符 正则表达式与通配符不一样,它们表示的含义并不相同!正则表达式只是一种表示法,只要工具支持这种表示法,那么该工具就可以处理正则表达式的字符串.vim.grep.awk.sed都支持正 ...

  2. linux中grep工具

    正则表达式 以前我们用grep在一个文件中找出包含某些字符串的行,比如在头文件中找出一个宏定义.其实grep还可以找出符合某个模式(Pattern)的一类字符串.例如找出所有符合xxxxx@xxxx. ...

  3. Linux CentOS7 VMware正则介绍、grep工具、egrep表达式

    一.正则介绍 正则是学习shell脚本的必学的内容,正则学的好坏直接影响到shell编程能力. 正则表达式:使用单个字符串来描述或匹配一系列符合某个句法规则的字符串.通常用来检索和替换那些符合某个模式 ...

  4. Linux中grep工具的使用

    Grep grep(Globel Search Regular Expression and Printing out the line)全面搜索正则表达式并把行打印出来,是一种强大的文本搜索工具,是 ...

  5. 【one day one linux】grep工具

    grep  筛选功能 学习这些命令采用20/80原则,这样,可以达到使用%20的命令选项,处理80%的情况. #grep 的使用格式 grep [option] pattern file 那么接下来看 ...

  6. 查找文本工具grep

    许多时候需要从一大堆的命令输出或文本内容中找出一两行关键的内容,例如从系统用户文件中查找某个用户.如果不借助工具,这将是一项非常繁琐的工作,这时可以使用grep工具对内容进行筛选. grep(glob ...

  7. Linux小工具的应用,grep,sort,wc,cut

    小工具的使用: 1.管道(|):连接多个命令的工具,进程之间通讯的一种方式 用法:命令1 | 命令2 | 命令3....2.grep工具:行过滤,打印出的结果一行一行的 用法:grep options ...

  8. grep 正则表达式

    本文转自:http://www.jb51.net/article/31207.htm 正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的字符串.vim.grep.aw ...

  9. 快速掌握grep命令及正则表达式

    Linux系统自带了支持拓展正则表达式的 GNU 版本 grep 工具,所有的Linux发行版中均默认安装grep ,grep 命令被用来检索一台服务器或工作站上任何位置的文本信息,如何在 Linux ...

随机推荐

  1. InteractiveHtmlBom 在手机上无法显示 BOM List 和装配图的问题

    InteractiveHtmlBom 在手机上无法显示 BOM List 和装配图的问题 InteractiveHtmlBom 插件是一款用于 KiCad BOM 装配图生成插件. 最近新生成的 文件 ...

  2. [自考]C++中一些特殊用法 2016-10-16 22:12 318人阅读 评论(30) 收藏

    做了一段时间的C++的试题了,总结一些这段时间经常犯错和需要注意的地方. 一.常用的保留字和符号 const 定义常量或者参数 void 定义空类型变量或空类型指针,或指定函数没有返回值 static ...

  3. SDUT-3362_村村通公路

    数据结构实验之图论六:村村通公路 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 当前农村公路建设正如火如荼的展开,某乡 ...

  4. UVa 10520【递推 搜索】

    UVa 10520 哇!简直恶心的递推,生推了半天..感觉题不难,但是恶心,不推出来又难受..一不小心还A了[]~( ̄▽ ̄)~*,AC的猝不及防... 先递推求出f[i][1](1<=i< ...

  5. mysql字段中提取汉字,去除数字以及字母

    如果只是删除尾部的中文,保留数据,可以用以下的简单方式 MySQL as num; +------+ | num | +------+ | +------+ DELIMITER $$ DROP FUN ...

  6. GIT 用RSA加密方式来记住密码

    ssh-kegen -t rsa -C "你的帐号";//生成rsa的公钥和密钥 当然这个要在GNU环境下来执行,要是用Windows的CMD是不可以的(不输入DIR时),感觉是因 ...

  7. OO第四单元博客作业

    OO第四单元博客作业 BUAA_1706_HugeGun 目录 第四单元作业架构设计 四个单元架构设计及OO方法理解 四个单元测试理解与实践演进 课程收获 一点建议 第四单元作业架构设计 ### 第十 ...

  8. 【SDOI2015】bzoj3990 排序

    A. 排序 题目描述 输入格式 输出格式 一行,一个整数,表示可以将数组A从小到大排序的不同的操作序列的个数. 样例 样例输入 3 7 8 5 6 1 2 4 3 样例输出 6 数据范围与提示 对于3 ...

  9. oracle连接多个扫描

    如果你对一个列和一组有限的值进行比较, 优化器可能执行多次扫描并对结果进行合并连接. 举例: SELECT * FROM LODGING WHERE MANAGER IN (‘BILL GATES’, ...

  10. Redis在Laravel项目中的应用实例详解

    https://mp.weixin.qq.com/s/axIgNPZLJDh9VFGVk7oYYA 在初步了解Redis在Laravel中的应用 那么我们试想这样的一个应用场景 一个文章或者帖子的浏览 ...