用法格式

grep [option] pattern file
 

实验文件

[root@zejin240 tmp]# cat testdir/tfile
1 #include <stdio.h>
2 void main()
3 {
4 int a,b;
5 a=10;
6 b=5;
7 a++;
8 b=a*2;
9 printf("Maxnum=%d",a>b?a:b);
10 }
 
[root@zejin240 tmp]# cat testdir/tfile1
Nice to meet you.
Hello World!
I like max and min
when meet a ?,think more.
and it will become a !
 
 
 

常用选项

匹配控制选项

-E:支持扩展正则表达式,相当于命令egrep
-F:只匹配固定的字符,相当于命令fgrep
-e:指定多个匹配模式
-i:忽略查找字符串及文件名大小写
-v:反向查找不匹配的行
-w:查找整个单词,而不一个子串
 
e.g 1.查找包含有main或Max的行
[root@zejin240 testdir]# grep -e 'main' -e 'Max' tfile
2 void main()
9 printf("Maxnum=%d",a>b?a:b);
 
e.g 2.查找包含有b且有Max的行
[root@zejin240 testdir]# grep 'b' tfile | grep 'Max'
9 printf("Maxnum=%d",a>b?a:b);
 
e.g 3.查找包含max的行,不区分大小写
[root@zejin240 testdir]# grep -i 'max' tfile
9 printf("Maxnum=%d",a>b?a:b);
 
e.g 4.查找没有=字符的行
[root@zejin240 testdir]# grep -v '=' tfile
1 #include <stdio.h>
2 void main()
3 {
4 int a,b;
7 a++;
10 }
 
 
 

输出控制选项

-c:输出匹配的总行数
-l:只输出匹配的文件名
--color:匹配的字符串用颜色显示
-o:只输出匹配的字符串,而不是所在行
-q:没有任何输出,有匹配的行返回状态0,适合与判断的时候用
 
 
e.g 5.查找有=号的行总行数
[root@zejin240 testdir]# grep -c '=' tfile
4
 
 

输出行前缀控制

-n:在每行前面输出该行在文件中所处的行数
-H:在每行前加止文件名,在有多个文件时该值是默认打开的
 
e.g 6.查找=所在的行数
[root@zejin240 testdir]# grep -n '=' tfile
5:5 a=10;
6:6 b=5;
8:8 b=a*2;
9:9 printf("Maxnum=%d",a>b?a:b);
 
 

上下文件输出控制

-A #:输出匹配行及后面#行
-B #:输出匹配行及前面#行
-C #:输出匹配行及前后#行
 
 
e.g 7.查找包含main的行及其后面2行
[root@zejin240 testdir]# grep -A 2 'main' tfile
2 void main()
3 {
4 int a,b;
 
e.g 8.查找包含main的行及其前面2行
[root@zejin240 testdir]# grep -B 2 'int' tfile
2 void main()
3 {
4 int a,b;
--
7 a++;
8 b=a*2;
9 printf("Maxnum=%d",a>b?a:b);
 
e.g 9.查找含有main的行及其前后1行:
[root@zejin240 testdir]# grep -C 1 'main' tfile
1 #include <stdio.h>
2 void main()
3 {
 
 

文件及文件夹控制

-r:递归查询文件及文件夹下的文件
 
e.g 10.查找文件夹下所有包含max(不区分大小写)的行
[root@zejin240 tmp]# ls
testdir
[root@zejin240 tmp]# grep -i 'max' * #查找不到,只会在当前文件夹下找
[root@zejin240 tmp]# grep -i -r 'max' * #正确,会递归入文件中查找
testdir/tfile:9 printf("Maxnum=%d",a>b?a:b);
testdir/tfile1:I like max and min
 
 

注意点

1.大多数的元字符在中括号中已经失去了他们的特殊意义,就是一个普通的字符而已
2.在基本的正则表达式中,?, +, {, |, (, 和) 没有特殊的含义,就是一个普通的字符,如果在使用时要让它有正则的含义,则需要加上\,如\? \+
3.传统的egrep命令并不支持{元字符,有一些egrep用\{来实现,为了避免出现疑惑,在grep -E 匹配{时最好用模式[{]
 
e.g 11.查找包含+和?号的行 (中括号中的加号和问号不需要加反斜线)
[root@zejin240 testdir]# grep '[+?]' tfile
7 a++;
9 printf("Maxnum=%d",a>b?a:b);
 
e.g 12.查找包含?号的行
[root@zejin240 testdir]# grep '?' tfile #直接写问号,不需要反斜线
9 printf("Maxnum=%d",a>b?a:b);
 
e.g 13.查找以有a,并且后面接任意一个字母的行
[root@zejin240 testdir]# grep 'a[a-zA-Z]' tfile
2 void main()
9 printf("Maxnum=%d",a>b?a:b);
 
 
 
 

grep命令详解的更多相关文章

  1. linux grep命令详解

    linux grep命令详解 简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来 ...

  2. grep 命令详解

    [root@www ~]# grep [-acinv] [--color=auto] '搜寻字符串' filename 选项与参数: -a :将 binary 文件以 text 文件的方式搜寻数据 - ...

  3. Linux之grep命令详解

    简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它 ...

  4. Ubuntu 14.10 下grep命令详解

    简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它 ...

  5. shell 中grep命令详解

    用‘grep’搜索文本文件如果您要在几个文本文件中查找一字符串,可以使用‘grep’命令.‘grep’在文本中搜索指定的字符串.举个例子:假设您正在‘/usr/src/linux/Documentat ...

  6. Linux的grep命令详解

    简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它 ...

  7. Linux Shell脚本入门--grep命令详解

    grep简介<摘自鸟哥,并加以整理.> grep (global search regular expression(RE) and print out the line,全面搜索正则表达 ...

  8. linux grep命令详解(转)

    简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它 ...

  9. 【转】linux grep命令详解

    简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它 ...

  10. Linux grep 命令详解

    简介grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能 ...

随机推荐

  1. SQL 2008升级SQL 2008 R2完全教程或者10.00.1600升级10.50.1600

    http://blog.csdn.net/feng19821209/article/details/8571571 SQL 2008升级SQL 2008 R2完全教程或者10.00.1600升级10. ...

  2. PowerDesigner PDM生成sql脚本时:表的名称和表里面的字段名称都有引号解决。。。

    PowerDesigner PDM生成sql脚本时:表的名称和表里面的字段名称都有引号解决... 1.当你的PowerDesigner 是新安装时,你得设置可能就会出现一些问题,在这里比如:PDM生成 ...

  3. IT人生知识分享:博弈论的理性思维

    背景: 昨天看了<最强大脑>,由于节目比较有争议性,不知为什么,作为一名感性的人,就想试一下如果自己理性分析会是怎样的呢? 过程是这样的: 中国队(3人)VS英国队(4人). 1:李建东( ...

  4. EventAggregator, EventBus的实现

    系列主题:基于消息的软件架构模型演变 .net中事件模型很优雅的实现了观察者模式,同时被大量的使用在各种框架中.如果我们非要给事件模型挑毛病,我觉得有两点: 实现起来略微繁琐 正如我们上篇文章分析,事 ...

  5. Some practices to write better C#/.NET code(译)

    C#(.NET)中有关编码的一些建议,原文地址:http://www.codeproject.com/Articles/539179/Some-practices-to-write-better-Cs ...

  6. Redis系列(四)-低成本高可用方案设计

    关于Redis高可用方案,看到较多的是keepalived.zookeeper方案. keepalived是主备模式,意味着总有一台浪费着.zookeeper工作量成本偏高. 本文主要介绍下使用官方s ...

  7. Net作业调度(五)—quartz.net动态添加job设计

    介绍 在实际项目使用中quartz.net中,都希望有一个管理界面可以动态添加job,而避免每次都要上线发布. 也看到有园子的同学问过.这里就介绍下实现动态添加job的几种方式, 也是二次开发的核心模 ...

  8. C语言 · 矩阵乘法

    问题描述 输入两个矩阵,分别是m*s,s*n大小.输出两个矩阵相乘的结果. 输入格式 第一行,空格隔开的三个正整数m,s,n(均不超过200). 接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j ...

  9. .NET 基础 一步步 一幕幕 [前言]

    .NET 基础 一步步 一幕幕 [前言部分] 本人小白一枚,虽然说从去年就开通博客了,到现在也没有写多少东东,虽然工作了,也没有更好得总结.故此重新祭出博客园法宝,修炼技术,争取早日走上大神之位. 故 ...

  10. sublime text3同时编辑多行

    sublime text3同时编辑多行 下面的才是正确的姿势,之前一直是shift + 右键 拖啊. http://stackoverflow.com/questions/32127604/how-t ...