用法格式

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. pyserial 16进制显示与发送

    pyserial 16进制显示与发送 http://www.centoscn.com/python/2013/0817/1320.html 十六进制显示的实质是把接收到的字符诸葛转换成其对应的ASCI ...

  2. ABP框架理论学习之Debugging

    返回总目录 所有的官方ABP nuget包都是支持GitLink的,这意味着你可以在项目中轻松地调试所有的以Abp为前缀的Nuget包. 要开启这项支持,"启用源服务器支持"选项应 ...

  3. 利用history实现无刷新跳转界面

    看标题是不是感觉很拽的样子,其实没什么啦,也就是时下常说的单页面应用.这种web形式在如今的移动端十分流行,毕竟在移动端频繁得去刷新界面不是很友好,而且还费流量.今天我们要做一个小的app(移动端), ...

  4. 1ms引发的问题

    最近在跟SQLServer数据库进行交互的时候发现一个奇怪的问题,在往数据库里边插入日期型数据的时候,在C#里面赋值的为 2014/05/19 23:59:59,但是存到数据库里边就变成了2014/0 ...

  5. Git 进阶指南

    转自: https://github.com/kaiye/kaiye.github.com/issues/7 在掌握了基础的 Git 使用 之后,可能会遇到一些问题.以下是猫哥筛选总结的部分常见问题, ...

  6. 《Entity Framework 6 Recipes》中文翻译系列 (23) -----第五章 加载实体和导航属性之预先加载与Find()方法

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 5-2  预先加载关联实体 问题 你想在一次数据交互中加载一个实体和与它相关联实体. ...

  7. EL

  8. WPF入门教程系列十七——WPF中的数据绑定(三)

    四. XML数据绑定 这次我们来学习新的绑定知识,XML数据绑定.XmlDataProvider 用来绑定 XML 数据,该XML数据可以是嵌入.Xmal文件的 XmlDataProvider 标记中 ...

  9. 数据库中GETDATE()函数格式化时间

    SELECT CONVERT(varchar(100), GETDATE(), 0): 05 16 2016 10:57AM SELECT CONVERT(varchar(100), GETDATE( ...

  10. [转]Linux常用命令

    系统信息arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / ...