grep详解
一.简介
Global Regular Expression Print,是一种强大的文本搜索工具,能使用正则表达式。
二.语法
grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
如果用-E/-e,则pattern就不需要转义。
2.1 [options]主要参数
| 选项 | 备注 |
| -c | 只输出匹配行的计数。 |
| -o | 只输出匹配的部分。 |
| -i | 不区分大小写(只适用于单字符)。 |
| -h | 查询多文件时不显示文件名。 |
| -l | 查询多文件时只输出包含匹配字符的文件名。 |
| -L | 列出不匹配的文件名 |
| -n | 显示匹配行及行号。 |
| -s | 不显示不存在或无匹配文本的错误信息。 |
| -v | 显示不包含匹配文本的所有行(反向)。 |
| -r | 搜索子目录 |
| -d | 略过子目录 |
| -A n | 匹配行上下文向后追加n行 |
| -B n | 匹配行上下文向前追加n行 |
| -C n | 匹配行上下文向前/向后都追加n行 |
| -E | 等价于egrep,正则义 |
| -F | 等价于fgrep,转义 |
2.2 pattern正则表达式主要参数(用\转义)
| 选项 | 备注 |
| \ | 忽略正则表达式中特殊字符的原有含义。 |
| | | 或 |
| ^ | 匹配正则表达式的开始行。 |
| $ | 匹配正则表达式的结束行。 |
| \< | 从匹配正则表达 式的行开始。 |
| \> | 到匹配正则表达式的行结束。 |
| [ ] | 单个字符,如[A]即A符合要求 。 |
| [ - ] | 范围,如[A-Z],即A、B、C一直到Z都符合要求 。 |
| . | 所有的单个字符。 |
| ? | 至多1次 |
| * | 零次以上。 |
| + | 1次以上。 |
| {n} | 严格匹配n次 |
| {n,} | n次以上 |
| {n,m} | [n,m]次 |
三.简例
• $ grep ‘test’ *.txt
显示所有以d开头的文件中包含 test的行。
• $ grep ‘test’ aa bb cc
显示在aa,bb,cc文件中匹配test的行。
• grep -o -E 'id=[0-9]+' data.doc
只输出行中"id=xxx"的部分。
• grep -Ev '^$|^#' test.txt
匹配非空行和注释行
• ps -aux|grep tomcat | grep -v grep
排除自身
• $ grep ‘[a-z]\{5\}’ aa
• $ grep ‘[a-z]\+’ aa
显示所有包含每个字符串至少有5个连续小写字符的字符串的行。
• $ grep ‘w\(es\)t.*\1′ aa
如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着 另外一个es(\1),找到就显示该行。如果用egrep或grep -E,就不用”\”号进行转义,直接写成’w(es)t.*\1′就可以了。
• $ grep pattern1 | pattern2 files
或
• $ grep pattern1 files | grep pattern2
与
• $ grep 'aa' a.txt | wc -l
统计行数
• $ grep '\$' a.txt
忽略正则表达式中特殊字符的原有含义
• grep '^[^48]' data.doc
不匹配行首是48的行
• grep '[^a-zA-Z]oo' pp
匹配oo之前没字符的行
• egrep '219|216' data.doc
使用扩展模式匹配
• egrep 'g(o|pp)d' pp
匹配含有god或gppd的行
end
grep详解的更多相关文章
- ps -ef|grep详解 、kill与kill -9的区别
ps -ef|grep详解 ps命令将某个进程显示出来 grep命令是查找 中间的|是管道命令 是指ps命令与grep同时执行 PS是LINUX下最常用的也是非常强大的进程查看命令 grep命令是查找 ...
- Linux文件搜索命令locate、which、grep详解
命令locate详解 命令locate,其基本功能是在文件资料库中可以快速的搜索系统文件,占用系统资源很少,例如:locate my.cnf 还可以使用locate -i [文件名],不区分大小写进行 ...
- linux之文件查找find grep详解,以及压缩归档
.find linux里的实时查找工具,通过制定路径完成文件查找. find[options]...[查找路径] [查找条件] [处理动作] 查找路径:查找的位置,默认是当前文件夹. 查找条件:指定查 ...
- linux grep详解
Table of Contents 1. grep简介 2. grep正则表达式元字符集(基本集) 3. 用于egrep和 grep -E的元字符扩展集 4. POSIX字符类 5. Grep命令选项 ...
- ps -ef|grep详解
ps命令将某个进程显示出来 grep命令是查找 中间的|是管道命令 是指ps命令与grep同时执行 PS是LINUX下最常用的也是非常强大的进程查看命令 grep命令是查找,是一种强大的文本搜索工具, ...
- grep 详解
grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.(global search regular expression(RE) and print out the l ...
- awk sed grep 详解
Linux的文本处理工具浅谈 awk [功能说明] 用于文本处理的语言(取行,过滤),支持正则 NR代表行数,$n取某一列,$NF最后一列 NR==20,NR==30 从20行到30行 FS竖着切,列 ...
- linux命令之——grep详解
grep命令用于查找文件里符合条件的字符串:也可以用于查找内容包含指定的范本样式的文件.它能使用正则表达式搜索,用于在文件中搜索指定的字符串模式,列出含有匹配模式子符串的文件名,并输出含有该字符串的文 ...
- Linux grep 查找字符所在文件(grep详解)
查找字符所在文件 grep -ir "S_ROLE" ./* -i 不区分大小写 -r 查找字符出处 -a --text #不要忽略二进制的数据. -A<显示行数& ...
随机推荐
- OpenJTAG+Eclipse 3.5+GDB+Mini2440图文教程
OpenJTAG+Eclipse 3.5+GDB+Mini2440图文教程 OpenJTAG与JLink的区别比较: 相同点:都同时具备USB转JTAG.USB转串口功能 差别: 1. 操作系统: O ...
- 【转】Win7与Ubuntu 14.04双系统修改启动项顺序
原文网址:http://blog.sina.com.cn/s/blog_b381a98e0102v1gy.html 一.Ubuntu14.04采用默认安装方式的情况 采用默认安装方式,在win7下安装 ...
- 用Delphi的TIdHttp控件发起POST请求和Java的Servlet响应
http://blog.csdn.net/panjunbiao/article/details/8615880 用Delphi的TIdHttp控件发起POST请求和Java的Servlet响应
- hibernate分页查询的各种方法
统计总数: public Integer countAll1() { String hql = "select count(*) from News as news"; List ...
- IIS 问题解决
一.网站发布后 报500错误 解决办法:重新向iis注册framwork: 二.试图加载格式不正确的程序.(Exception from HRESULT: 0x8007000B) 解决办法:对应应用程 ...
- PHP设计模式笔记四:适配器模式 -- Rango韩老师 http://www.imooc.com/learn/236
适配器模式 1.适配器模式,可以将截然不同的函数接口封装成统一的API 2.实际应用举例,PHP的数据库操作有mysql.mysqli.pdo三种,可以用适配器模式统一成一致,类似的场景还有cache ...
- 大话分页(补充)——Threadlocal封装offSet和pageSize简化分页工具类
经过前两篇文章(大话分页一.大话分页二)的介绍,我认为我想介绍的东西已经介绍完了,不过想精益求精的童鞋可以继续看本篇文章. 在第一篇文章中介绍了一个分页的工具类(具体请看大话分页一),从实现功能上来说 ...
- HDU 2845 Beans (DP)
Problem Description Bean-eating is an interesting game, everyone owns an M*N matrix, which is filled ...
- AngularJS移动开发中的坑汇总
使用AngualrJs开发移动App已经快半年了,逐渐积累了非常多AngularJS的问题,特别是对于用惯了Jquery的开发人员,转到AngularJS还是须要克服非常多问题的.不像Jquery那样 ...
- 线程、线程句柄、线程ID
什么是句柄:句柄是一种指向指针的指针.我们知道,所谓指针是一种内存地址.应用程序启动后,组成这个程序的各对象是住留在内存的.如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址 ...