<a href=“http://blog.csdn.net/lanchunhui/article/details/51487497”, target="_blank"> 强悍的 Linux —— 强悍的 grep

  • grep -inr {string}:在当前目录或子目录的文件中搜索某个字符串;
  • -A:打印匹配行的后多少多少行:
    • grep -A 10 1371:后十行;

0. egrep == grep -E

linux 下的正则表达式,分为基础表达式,和扩展正则表达式。-E 可以使 grep 使用扩展正则表达式,也可以使用默认启用扩展正则表达式的 egrep 命令。

1. 经典用法

  • -v:实现对某些行(注释行)的删除

    $ cat test.c | grep -v ^[//] >> test2.c
    
  • 全字匹配

    • grep:grep -w "abc"-w:word regexp)完全匹配字词(以空格或其他特殊字符分割),

      • abcd 便不会匹配到;
  • 查询文件的修改时间:(使用 stat 命令)

    stat test.txt | grep -i "modify"
    

2. 源码的阅读

比如当我们在阅读 caffe 的源码时,在 caffe 根目录下的 src/caffe/layer_factory.cpp 中有个宏调用:REGISTER_LAYER_CREATOR(Pooling, GetPoolingLayer),对于这个宏可能有所困惑,我们在 caffe 根目录下运行如下命令:

$ grep -n -H -R "REGISTER_LAYER_CREATOR" *
  • -n:显示行号,便于定位;
  • -H:显示文件名,便于定位;-h:不显示文件名;
  • -R:递归查找每个子目录,适合工程较大、分多个目录存放的场景;

3. 主要参数

  • -c:只输出匹配行的计数。
  • -I:不区分大 小写(只适用于单字符)。
  • -h:查询多文件时不显示文件名。
  • -l:查询多文件时只输出包含匹配字符的文件名。
  • -n:显示匹配行及 行号。
  • -s:不显示不存在或无匹配文本的错误信息。
  • -v:显示不包含匹配文本的所有行

pattern 正则表达式主要参数:

  • \: 忽略正则表达式中特殊字符的原有含义,即转义。
  • ^:匹配正则表达式的开始行。
  • $: 匹配正则表达式的结束行。
  • <:从匹配正则表达式的行开始。
  • >:到匹配正则表达式的行结束。
  • [ ]:单个字符,如[A]即A符合要求 。
  • [ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
    • {}:出现的次数;
  • 。:所有的单个字符。
    • :有字符,长度可以为0。

4. 简单示例

  • $ grep ‘test’ d*
    显示所有以d开头的文件中包含 test 的行。

  • $ grep ‘test’ aa bb cc
    显示在aa,bb,cc文件中匹配test的行。

  • $ grep ‘[a-z]{5}’ aa
    显示所有包含每个字符串至少有5个连续小写字符的字符串的行。

  • $ grep ‘w(es)t.\1′ aa
    如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个es(\1),找到就显示该行。如果用egrep或grep -E,就不用”\”号进行转义,直接写成’w(es)t.
    \1′就可以了。

强悍的 Linux —— grep 与 egrep相关推荐

  1. linux中的grep和egrep命令,Linux grep和egrep命令

    在Linux中,grep是一个非常强大的文本搜索工具,它可以根据用户指定的文本搜索模式对目标文件进行逐行的搜索,然后将被模式匹配到的用户所需要的信息显示出来:那么,egrep呢?从字母组合上看,二者很 ...

  2. Linux grep,egrep及相应的正则表达式用法详解

    linux在进行文本处理过程中的文本搜索工具称为正则表达式.文本搜索工具有grep.egrep.fgrep,egrep为正则表达式的扩展正则表达式,fgrep用于搜索文本字符串,与 grep 和 eg ...

  3. Linux正则表达式grep与egrep

    grep -io "http:/=[A-Z0-9]\{16\}" ./wsxf.txt >wsxf_urls.txt Linux正则表达式grep与egrep 正则表达式:它 ...

  4. linux里grep和egrep,fgrep的区别

    例子: 1. : 格式: grep [option] pattern filename 注意: pattern如果是表达式或者超过两个单词的, 需要用引号引用. 可以是单引号也可双引号, 区别是单引号 ...

  5. Linux三剑客之grep 与 egrep

    grep: Linux上文本处理三剑客 1 grep:文本过滤(模式:pattern)工具; *(grep, egrep, fgrep) 2 sed:stream editor,文本编辑工具: 3 a ...

  6. linux全局搜索是什么,linux之文本搜索工具(grep、egrep)用法

    linux操作系统的一项重要的法则就是一切皆文件,然而对于初学者来说最头疼的一件事就是linux庞大文件系统的管理,对于一些文本文件的查找所搜等无从下手,特别是对于习惯于windows操作系统的大家来 ...

  7. linux中egrep的用法,liunx中grep,egrep及相应的正则表达式和用法

    正则表达式是linux中重要的一部分,学习正则表达式先要学好grep和egrep的命令使用. 1. grep: grep命令的基本语法格式 grep [OPTION]... 'PATTERN' FIL ...

  8. linux egrep和grep区别,Linux中的Grep,Egrep和Fgrep有什么区别?

    在Unix系统上的一个着名的搜索工具,可以用于搜索任何东西,无论是一个文件,或一行或多行的文件是grep实用程序.它在功能上非常庞大,这可以归因于它支持的大量选项:使用字符串模式或reg-ex模式或基 ...

  9. Linux命令:grep命令 | egrep命令

    grep:文本搜素工具,根据用户指定的文本模式对目标文件进行逐行搜索,显示能被模式所匹配到的行 包含三个命令:grep.egrep(相当于grep -E 扩展的正则表达式)和fgrep(相当于grep ...

最新文章

  1. mysql学习三:mysql的组成部分
  2. pcie 设备号多少位_怎么读取PCIe设备的VPD信息?
  3. 下载旧版本jdk和tomcat
  4. 我的第一个C++程序,还像个C++c程序的样子吧
  5. Linux内存管理的设计与实现,Linux内核设计与实现-内存管理学习小结
  6. sqlsever 查询最新时间
  7. MySQL Client/Server Protocol
  8. HTTP和HTTPS的区别,SSL的握手过程,kotlin协程异常
  9. java求1到100素数的和_求解JAVA题:求出1~100中所有质数?,求一段java代码,题目是求1到100之间所有质数和?...
  10. java流和循环 效率_Java stream 和 for循环效率对比问题
  11. Python实现文件前添加序号
  12. java学习:模拟KTV点歌系统
  13. 环游世界,走遍读过的每一个国家和城镇
  14. LibreCAD for windows 编译
  15. python - RSA加密
  16. CPU发展史和相关品牌介绍
  17. 获取一个group by里面的总和或者聚合函数 思路杂乱 不要看
  18. 方法:三遍学习法 +PPT 笔记法
  19. CentOS Minimal 和 NetInstall 版本区别
  20. Springsecurity引入静态资源 css,js,图片被屏蔽等问题解决办法

热门文章

  1. oracle das系统,分布式声波传感系统DAS
  2. matlab跟maxwell联合优化,sim-sim-maxwell联合仿真遇到问题及解决方法
  3. php 辗转相除法,手撸golang 基本数据结构与算法 最大公约数 欧几里得算法/辗转相除法...
  4. 蓝桥杯-天干地支问题
  5. Linux内核设计与实现
  6. 分布式系统唯一ID设计
  7. mfc 对话框应用程序 如何利用按钮弹出另一对话框
  8. HiveQL学习笔记(三):Hive表连接
  9. matplotlib使用参考地址
  10. poi 导出excel 中合并单元格