热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

grep、egrep、fgrep与正则表达式

grep(全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它只能使用基本的正则表达式来搜索文本,并把匹配的行打印出来。它的主要功能是进行字符串数据的比较,然后


      grep  (全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它只能使用基本的正则表达式来搜索文本,并把匹配的行打印出来。它的主要功能是进行字符串数据的比较,然后符合用户需求的字符串打印出来,但是主意,grep在数据中查找一个字符串时,是以“整行”为单位进行数据筛选的。

   egrep 命令等同于grep -E,利用此命令可以使用扩展的正则表达式对文本进行搜索,并把符合用户需求的字符串打印出来。

   fgrep 命令等同于grep -F,它利用固定的字符串来对文本进行搜索,但不支持正则表达式的引用,所以此命令的执行速度也最快。


一、grep命令格式及常用选项

   命令格式:grep [options] "pattern" Files

       [options]参数

       --color 匹配到的字符用高亮颜色显示出来

       -v      反向选取匹配到的内容

       -o      只显示被模式匹配到的内容

       -r      搜索多个文件时,以递归搜索

       -i      不区分字符大小写

       -A n    显示匹配到的行时,且显示其后面的n行

       -B n    显示匹配到的行时,且显示其前面的n行

       -C n    显示匹配到的行时,且显示其前面和后面的n行

       -E      使用扩展的正则表达式,等同于"egrep"命令

       pattern:匹配查找文件内容的模式

二、正则表达式(分为基本正则表达式与扩展正则表达式)

  2.1 基本正则表达式(工作在贪婪模式,尽可能长的匹配符合模式的内容)

    2.1.1 元字符:

       .:    匹配任意单个字符;用法格式“a.c”

       ^:    锚定行首符合条件的内容;用法格式”^pattern”

       $:    锚定行尾符合条件的内容;用法格式”pattern$”

       *:    匹配紧挨在其前面的字符任意次;用法格式”a*b”

       .*:   匹配任意字符任意次;用法格式“a.*b”

       []:   匹配指定范围内的任意单个字符;用法格式”[a-z]”

       [^]:  匹配指定范围外的任意单个字符;用法格式”[^a-z]”

       \?:   匹配紧挨在其前面的字符0次或1次;用法格式”a\?b”

       \{0,n\}:匹配其前面的字符0次到n次;用法格式"a\{0,3\}b"

       \{m,\}: 匹配其前面的字符至少m次;用法格式 "a\{2,\}b"

       \{m,n\}:匹配其前面的字符至少m次,最多n次;用法格式“a\{1,3\}b”

       \<:锚定词首;用法格式“\

       \>:锚定词尾;用法格式“pattern\>”

       \(\):分组匹配;用法格式“\(a.b\).*\1”

   2.1.2 简单示例:

     查看/etc/passwd文件中包含"r..t"字符的行;

     查看/etc/passwd文件中包含"root"单词的行;

     查看/etc/passwd文件中以r开头以sh结尾的行;

     找出某文件中的,1位数,或2位数;

       [:lower:]   小写字母;等同于”a-z”

       [:upper:]   大写字母;等同于”A-Z”

       [:digit:]   数字;等同于”0-9”

       [:alpha:]   大小写字母,等同于”a-zA-Z”

       [:alnum:]   大小写字母及数字;等同于”a-zA-Z0-9”

       [:space:]   空白字符

       [:punct:]   标点符号

  2.2 扩展正则表达式(egrep、grep -E) 注:在基本正则表达式基础上支持这些元字符

     2.2.1 元字符:

       ?:    匹配紧挨在其前面的字符0次或1次;用法格式”a?b”

       {m,n}:匹配其前面的字符至少m次,最多n次;用法格式“a{1,3}b”

       {m}:  精确匹配m次;用法格式“a{2}b”

       ():   分组匹配;用法格式“(a.b).*\1”

       |:    或者;用法格式”a|b”

       +:    匹配其前面的字符至少1次;用法格式“a+b”

     2.2.2 简单示例:

      显示/boot/grub/grub.conf文件中以一个或多个空白字符开头的行;

      找出ifconfig命令结果中的1-255之间的整数;

      查找/etc/rc.d/rc.sysinit中符合“任意单个字符后面跟了一个n,n后面跟了任意长度字符,而后又跟了任意单个字符后面跟了一个n”但后面的任意一个字符后跟了一个n要与前面的字符相同;


本文出自 “ALLEN” 博客,请务必保留此出处http://502245466.blog.51cto.com/7559397/1248703


推荐阅读
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 编写了几个500行左右代码的程序,但基本上解决问题还是面向过程的思维,如何从问题中抽象出类,形成类的划分和设计,从而用面向对象的思维解决问题?有这方面的入门好书吗?最好是结合几个具体的案例分析的 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 深入理解 H5C3 和 JavaScript 核心问题
    本文详细探讨了 H5C3 和 JavaScript 中的一些核心编程问题,通过实例解析和代码示例,帮助开发者更好地理解和应用这些技术。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 本文详细介绍了MicroATX(也称Mini ATX)和MATX主板规格,探讨了它们的结构特点、应用场景及对电脑系统成本和性能的影响。同时,文章还涵盖了相关操作系统的实用技巧,如蓝牙设备图标删除、磁盘管理等。 ... [详细]
  • Codeforces Round #566 (Div. 2) A~F个人题解
    Dashboard-CodeforcesRound#566(Div.2)-CodeforcesA.FillingShapes题意:给你一个的表格,你 ... [详细]
  • 最近团队在部署DLP,作为一个技术人员对于黑盒看不到的地方还是充满了好奇心。多次咨询乙方人员DLP的算法原理是什么,他们都以商业秘密为由避而不谈,不得已只能自己查资料学习,于是有了下面的浅见。身为甲方,虽然不需要开发DLP产品,但是也有必要弄明白DLP基本的原理。俗话说工欲善其事必先利其器,只有在懂这个工具的原理之后才能更加灵活地使用这个工具,即使出现意外情况也能快速排错,越接近底层,越接近真相。根据DLP的实际用途,本文将DLP检测分为2部分,泄露关键字检测和近似重复文档检测。 ... [详细]
  • 本文探讨了如何在 PHP 的 Eloquent ORM 中实现数据表之间的关联查询,并通过具体示例详细解释了如何将关联数据嵌入到查询结果中。这不仅提高了数据查询的效率,还简化了代码逻辑。 ... [详细]
  • 机器学习核心概念与技术
    本文系统梳理了机器学习的关键知识点,涵盖模型评估、正则化、线性模型、支持向量机、决策树及集成学习等内容,并深入探讨了各算法的原理和应用场景。 ... [详细]
author-avatar
玫瑰花开-内蒙_238
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有