用法格式

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. js判断地址转向

    <script type="text/javascript"> if (navigator.userAgent.search(/iphone|ipod|ipad|And ...

  2. CYQ.Data+EasyUI开发:几个相关的问题CheckBox、Tree、TreeGrid

    前言: 话说到新的公司已经呆了三个星期了,从上班的第二天开始就一直在写项目文档和给开发人员培训,以至于我的QQ签名从"我不是来搞培训的“到最后直接换成”我是来搞培训的“. 虽然挂名开发经理, ...

  3. python自动化测试(3)- 自动化框架及工具

    python自动化测试(3) 自动化框架及工具 1   概述 手续的关于测试的方法论,都是建立在之前的文章里面提到的观点: 功能测试不建议做自动化 接口测试性价比最高 接口测试可以做自动化 后面所谈到 ...

  4. WCF basicHttpBinding之Transport Security Mode, clientCredentialType="None"

    原创地址:http://www.cnblogs.com/jfzhu/p/4071342.html 转载请注明出处 前面文章介绍了<WCF basicHttpBinding之Message Sec ...

  5. SQL Server 2012 Managed Service Account

    原创地址:http://www.cnblogs.com/jfzhu/p/4007472.html 转载请注明出处 (一)Windows服务使用的登陆帐号 Windows服务只有登录到某一帐户的情况下才 ...

  6. mysql 的 VARCHAR VARCHAR2

    mysql 里面竟然没有 VARCHAR2 ??

  7. Docker学习笔记

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...

  8. bootstrap-material-design-个人总结

    bootstrap-material-design-个人总结: 所需框架:1.boostrapt 3.0+2.jQuery 1.9.1+ 项目目录:Material/├── css/│ ├── boo ...

  9. IOS系列swift语言之课时二

    今天我们要讲的就是函数[对于函数,在最后面还有几道题,喜欢的博友可以看了自己做一下,和我交流一下] 当然这与我们的c语言还是有一定的共同之处的,对于有一些c语言或者是java基础的童鞋,我觉得是很容易 ...

  10. ECS Win2008 远程时提示"要登录到此远程计算机,您必须被授予允许通过终端登录登录的权限"的解决方法

    问题描述 ECS Windows 2008 远程登陆时提示"要登录到此远程计算机,您必须被授予允许通过终端登录登录的权限",如下图所示: 问题分析 组策略中做了设置不允许管理员组成 ...