用法格式

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. snmp学习笔记

    snmp5.5 client 包含头文件 #include <net-snmp/net-snmp-config.h> #include <net-snmp/net-snmp-incl ...

  2. 解读ASP.NET 5 & MVC6系列(3):项目发布与部署

    本章我们将讲解ASP.NET5项目发布部署相关的内容,示例项目以我们前一章创建的BookStore项目为例. 发布前的设置 由于新版ASP.NET5支持多版本DNX运行环境的发布和部署,所以在部署之前 ...

  3. 【Java并发编程实战】-----“J.U.C”:ReentrantLock之三unlock方法分析

    前篇博客LZ已经分析了ReentrantLock的lock()实现过程,我们了解到lock实现机制有公平锁和非公平锁,两者的主要区别在于公平锁要按照CLH队列等待获取锁,而非公平锁无视CLH队列直接获 ...

  4. LNMP安装过程

    LNMP一键安装包是什么? LNMP一键安装包是一个用Linux Shell编写的可以为CentOS/RadHat/Fedora.Debian/Ubuntu/Raspbian/Deepin VPS或独 ...

  5. padding标准盒模型和怪异盒子模型

    我们都知道padding是为块级元素设置内边距 但是在使用过程中,我们却会遇到一些问题.padding的标准盒模型和怪异盒模型 padding盒子模型 我们通过demo来讲这个问题,用文字干讲第一没意 ...

  6. iOS 代码规范

    1 目的 统一规范XCode编辑环境下Objective-C.swift的编码风格和标准 2 适用范围 适用于所有用Objective-C,swift语言开发的项目. 3 编码规范 3.1 文件 项目 ...

  7. JSON数据的定义

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. Atitit Mysql查询优化器 存取类型 范围存取类型 索引存取类型 AND or的分析

    Atitit Mysql查询优化器 存取类型 范围存取类型 索引存取类型 AND or的分析     Atitit Mysql查询优化器 存取类型 范围存取类型 索引存取类型 AND or的分析1 存 ...

  9. 使用angular中ng-repeat , track by的用处

    我们见到最简单的例子是: <div ng-repeat="link in links" ></div> 如果item的值有重复的,比如links=[&quo ...

  10. iOS开发-应用崩溃日志揭秘(一)

    作为一名应用开发者,你是否有过如下经历? 为确保你的应用正确无误,在将其提交到应用商店之前,你必定进行了大量的测试工作.它在你的设备上也运行得很好,但是,上了应用商店后,还是有用户抱怨会闪退 ! 如果 ...