浅析grep工具相关选项及正则表达式

grep是linux下一个重要的文本处理工具之一,全称是Globel Search Regular Expression and Printing out the line(全面搜索正则表达式并把行打印出来是一种强大的文本搜索工具,是一个对行进行操作的搜索工作,它能使用正则表达式搜索文本,并把匹配的行打印出来。

grep家族包括grep、egrep和fgrep。 egrep表示扩展的grep,相比grep支持更多的元字符,"grep -E"相当于egrep。fgrep是fast grep,不支持元字符,但是搜索速度更快。grep搜索的结果被送到屏幕,不影响原文件内容。

可以使用man grep命令查看grep的相关文档:

wKiom1esZMHAE5fFAACiAOxe6kk012.png

(一)grep语法

grep的语法格式为: grep    [options]    'pattern'     FILE
                                       命令      选项             模式           文件

note:grep不加引号直接过滤字符串;grep在进行模式匹配的时候必须加引号,单引和双引号都可以;grep在引用变量的时候必须加双引号。

(二)grep的相关选项

-r:递归的搜索
       -v:反向选取,只显示不符合模式的行

-o:只显示被模式匹配到的字符串,而不是整个行

-i:匹配时不区分大小写
      -A #:显示匹配到的行时,顺便显示后面的#行(#表示数值)
      -B #:前面的#行
      -C #:前后的#行
      -E:使用扩展的正则表达式

使用示例:

wKioL1esZPGQnUKhAABZeVuZmPk010.png

wKiom1esZPKhwiRDAABUBrwCLIk881.png

wKioL1esZPKhgacfAAA2_neDv4s870.png

(三)正则表达式

利用grep找出符合某个模式(Pattern)的一类字符串就不得不使用正则表达式了。

正则表达式(man regex)是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串,通常被用来检索或替换那些符合某个模式的文本内容。

正则表达式分为:基本正则表达式和扩展正则表达式。

正则表达式由三种元素组成:

字符类(Character Class):在模式中表示一个字符,但是取值范围是一类字符中的任意一个。      

数量限定符(Quantier):例如邮件地址的每一部分可以有一个或多个x字符,IP地址的每一部分可以有1-3个y字符。      

位置限定符(Anchor):描述各种字符类以及普通字符之间的位置关系,例如邮件地址分三部分,用普通字符@和.隔 开,IP地址分四部分用.隔开,每一部分都可以用字符类和数量限定符描述。

正则表达式的相关介绍:

字符类:

wKiom1esaLmjUr6yAAFK7xkuv9k718.png

使用示例:

wKioL1esa9PwFZNxAAA0NBy-QEI030.png

wKiom1esa9TSW407AAA9yDd0fRQ109.png

wKioL1esa9awHOekAABCBqevflI177.png

数量限定符:

wKiom1esaQ-wullKAAJDyy6JfZs500.png

使用示例:

wKiom1esbr3St_3XAABBs_2fDTU010.png

wKiom1esbr2R_rYIAAA-KYP1QUQ624.png

wKioL1esbr7iilCaAAA4JQnFGeM930.png

wKioL1esbr-Q_2POAAAU_iP9B4s987.png

位置限定符:

wKioL1esaVOgW4zTAAFLKWQQBXk784.png

使用示例:

wKioL1escPPTD069AABIpj1TrMQ325.png

wKiom1escPTSg6LXAABAL_pmvik154.png

wKiom1escPXTpWScAAAumrLl4Zs148.png

note:使用--color命令使匹配字符高亮。

(四)小结

以上使用的是grep正则表达式的Extended规范,所有加上了-E选项。Basic规范也有这些语法,只是字符?+{}|()应 解释 为普通字符,要表示上述特殊含义则需要加\转义。如果用grep而不是egrep,并且不加-E 参数,则应该遵照Basic 规范来写正则表达式。 






本文出自 “七月朔风” 博客,请务必保留此出处http://luminous.blog.51cto.com/10797288/1837069

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。

OpenLDAP 加密传输 - 2016-09-05 17:09:08

一、自建证书颁发机构 关于证书发布机构的大家,请查看我的博文 《CentOS 6使用openssl搭建根CA》 。 我下面所操作的是根据前面几篇博文配置好的LDAP,在那上面来进行改动。服务端的IP是192.168.2.10,客户端的IP是192.168.2.11。 二、OpenLDAP 服务端设置 假设我们的CA自建证书和服务器证书都创建好了,CA的公钥是cacert.pem,服务端的证书名称是ldap.crt,私钥文件是ldap.key,所有的文件放到/etc/openldap/certs。 注意 ,
区别: 1. 两个文件都是设置环境变量文件的,/etc/profile是永久性的环境变量,是全局变量,/etc/profile.d/设置所有用户生效 2. /etc/profile.d/比/etc/profile好维护,不想要什么变量直接删除/etc/profile.d/下对应的shell脚本即可,不用像/etc/profile需要改动此文件 用法: CentOS 中每个用户都要指定各自的环境变量,其中包括可执行的 path路径,这些路径决定了每个用户在执行时的命令工具。 一般情况下,可以再每个用户的环境
原因: 有些情况下服务器系统不是自己装的,raid也不是自己配置的,或者当你接收一个岗位,远程登录系统后可能就不知道系统是否有做raid,raid级别?因此在这里博主总结一下Linux下查看软、硬raid信息的方法,分享一下。 软件raid:( 只能通过Linux系统本身来查看) 1)查看阵列状态: cat /proc/mdstat [root@ test ~] #cat/proc/mdstat 1 2 3 4 Personalities:[raid6][raid5][raid4] md0:activer
环境准备:( Nginx,tomcat 的安装部署本例不赘述。) 192.168.1.13 nginx 192.168.1.225 tomcat7 , terracotta 192.168.1.226 tomcat7 部署 terracotta+tomcat 集群: 一:安装 java 程序至系统,配置 java 环境。 #vi/etc/profileexportJAVA_HOME=/usr/local/javaexportPATH=/usr/local/java/bin:$PATH 二:部署单 terr
一、企业网络安全管理面临的新问题 现在计算机和移动智能设备越来越普及,有一些企业网用户不再满足于只让实名登记的、有实际办公用途的计算机上网,他们把家中的笔记本、智能手机、平板电脑带到单位,通过非法架设SOHO路由器、随身WIFI、安装免费WIFI软件等,绕过网络管理员的检测,实现非法接入企业网,然后就可以通过他们自己的设备实现一些移动平台的网络应用。这些SOHO路由器、随身WIFI的一个大卖点:“就是可以绕过检测,隐匿接入”,因为这些设备都可以关闭信号的广播发送,通过信号检测的方法也搜不到。 非法接入问题
什么是逻辑卷? LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。 LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,
========================================================== 一:MySQL主从复制规划 主库:(MySQLmaster)IP:10.0.0.52PROT:3306从库1:(MySQLslave)IP:10.0.0.52PORT:3307从库2:(MySQLslave)IP:10.0.0.52PORT:3308 ========================================================== 二:检查环境 (1)检

openstack-M版安装部署 - 2016-08-29 22:08:06

[openstack 信息简介 ] Openstack 项目是一个开源的云计算平台,它为广大云平台提供了可大规模扩展的平台,全世界的云计算技术人员创造了这个项目,通过一组相互关联的服务来提供了 Iaas 基础解决方案,每一个服务都通过提供自身的 API 来提供服务,个人或者企业完全可以根据自身的需求来安装一部分或者全部的服务。 通过下面一张表格来描述一下当前 openstack 的各个组件及功能。 Service Project name Description Dashboard Horizon 通过提
一、前言 Redmine是用Ruby开发的基于web的项目管理软件,是用ROR框架开发的一套跨平台项目管理系统,据说是源于Basecamp的ror版而来,支持多种数据库,有不少自己独特的功能,例如提供wiki、新闻台等,还可以集成其他版本管理系统和BUG跟踪系统,例如 Perforce 、SVN、CVS、TD等等。这种 Web 形式的项目管理系统通过“项目(Project)”的形式把成员、任务(问题)、文档、讨论以及各种形式的资源组织在一起,大家参与更新任务、文档等内容来推动项目的进度,同时系统利用时间线
一、Ansible介绍 1 、简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括: (1)、连接插件connection plugins:负责和被监控端实现通信; (2)、host inventory