Linux中grep与egrep的知识

在Linux中,有条基本哲学“使用文本文件来保存配置信息”。这就意味着在日常操作中需要大量的针对文本文件进行操作。在学习过程中我 们用来练习或者作为范例的文本文件通常比较短小,但在实际工作中可能情况就会大不相同,所以如何在熬长的内容中尽快找到我们想要的数据就是一个很重要的工 作。而grep就是来解决这个问题的。

gerp是一个文本处理工具,也可以说是一个文本搜索工具。其可以根据我们的想法来设定相应的搜索方式来帮助我们来迅速查找到想要解数据。

用法:

grep [OPTIONS] PATTERN [FILE...]

grep 选项      模式     文件...

常用的options:

--color=auto:这个选项是将模式查找到的内容以带颜色的方式显示出来,方便我们查看;

# egrep --color "bash" /etc/passwd

显示出/etc/passwd文件中包含bash的行;

-v:反向查找,有时我们会遇到查找相反结果的情况;

例:

# grep --color -v "bash" /etc/passwd

显示出/etc/passwd文件中不包含bash的行;

-o:用来显示模式匹配内容的本身,而不是显示一行;

例:

# grep --color -o "bash" /etc/passwd

bash

-i:不区分大小写字符,来匹配模式;

几个特殊options:

-A #(代表数字):显示匹配行的同时,显示其后#行的内容;

-B #:显示匹配行同时,显示其前#行的内容;

-C #:同时显示前#行和后#行的内容;

-E:使用扩展的正则表达式,即egrep;

通常直接使用egrep [OPTIONS] PATTERN [FILE...]这种用法来使用,扩展的正则表达式;

模式:我们用来查找相应内容的匹配方法;也就是模式构建的基本方法——正则表达式;

正则表达式:是一种字符书写的方式;其用来查找匹配字符所代表意义的内容;而其中用来进行这种书写的字符,称为“元字符”。

元字符:不表示字符本身的意义,而是用来进行额外功能的描述;在模式当中一旦包含元字符,一定要使用“”或‘’将元字符选中;如果其中出现变量,并希望进行变量替换则一定要用“”;推荐无论什么时候都使用“”;

正则表达式中有字符匹配,次数匹配,位置锚定,分组,引用这几类;

字符匹配:

.:代表匹配任意单个字符;

[]:代表匹配范围内的任意单个字符;

可以合并使用例如:[0-9a-zA-Z]

[[:upper:]]:大写字符;

ls -d a[[:upper:]]b:表示只显示a,b之间有大写字符;

[[:lower:]]:小写字符;

[[:alpha:]]:无论大小写;

[[:digit:]]:所有数字;

[[:alnum:]]:所有字母和数字;

[[:space:]]:空白字符;

[[:punct:]]:标点符号;

[^]:代表范围外的任意单个字符;

次数匹配:

*:代表匹配前一个字符任意次;

.*:代表任意字符任意次匹配;

\:是一个转义字符,即后面的字符不代表原本的意义,将其后字符意义进行转换;

\?:代表匹配前一个字符0或1次,即可有可无的意思;

\{m\}:代表匹配前一个字符m次;

\{m,n\}:代表匹配前一个字符最少m次,最多n次;

\{m,\}:代表匹配前一个字符至少m次;

\{0,n\}:代表匹配前一个字符至多n次;

位置锚定:

行锚定:

^:锚定行首;

$:锚定行尾;

^$:锚定空白行;

词锚定:

\<:锚定词首;

\>:锚定词尾;

格式:\<字符 或者 字符\>;当需要锚定词首时锚定符需要放在词的前面,同理,需要锚定词尾时锚定符需要放在词的后面;

分组:

\(\):将内容进行分组以便后续引用;

使用格式:

\(ab\)*xy;匹配ab这个组合重复任意次后面跟xy的行;

引用:引用对应的的分组;

\1:引用第一个分组内的字符,注意此处引用是完全引用,即分组1当中匹配到什么字符此处引用时也引用什么字符;

例:\(a.b\)xy\1;a6bxya6b匹配;

\2:引用第二个分组的内容;

\3:

...

以上是基本grep的正则表达式类型,之前还说道有种扩展的正则表达式,egrep或grep -E;下面了解一下egrep的正则表达式;

egrep的正则表达式与普通grep没有特别大的区别,其也是分为:

字符匹配:

次数匹配:

锚定:

行锚定:

锚定行首;

锚定行尾;

词锚定:

锚定词首;

锚定词尾;

分组:

引用:

但egrep与grep相比起来不再需要使用\对其后符号进行转义,即可以直接使用符号来进行匹配;同时也多了一个|字符;

|:代表或者;对其前后词组进行匹配;

例:abc|ABC;此处匹配结果是abc或ABC,而不是abcBC或abABC;

egrep -E “Con(c|C)at”;其意义是Concat或者ConCat;因为使用了分组符所以在对非词组进行|匹配时,需要使用分组进行协助;

经典练习:

找出ifconfig Command结果中的1到255之间的整数;或者之前无法写;

解:

ifconfig | egrep --color "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>"

写一个模式,能匹配真正意义上的IP地址:(1.0.0.1--223.255.255.254);

解:

egrep --color "(\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-1][0-9]|22[0-3])\>)\.(\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.){1}\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>"

时间: 2024-07-30 15:52:48

Linux中grep与egrep的知识的相关文章

Linux中grep、egrep正则表达式的使用

正则表达式的由来 正则表达式,英文写法Regular Expression,在编程语言中常被简写为regex.regexp等.它是用来描述.匹配一系列符合某个句法规则字符串的单个字符串. 正则表达式通常被用来检索.替换那些符合某个模式(Pattern)的文本. 1950年代,UNIX之父Ken Thompson将正则表达式引入编辑器QED,然后是编辑器ed,最终引入到grep中.从此,正则表达式被广泛地应用到了各种UNIX或类UNIX系统的工具之中,例如perl. 近些年来,主流操作系统.主流开

Linux中grep,egrep正则表达式基本用法

正则表达式 本人第一次写博文.由于最近刚好学到了正则表达式基本使用方法.整理了一下,以后用于回顾查找. 正则表达式基本说明: 基本来说,正则表达式式一种用来描述一定数量文本的模式,正则表达式的简写为REGEX 全称Regular Express. 首先正则表达式对于Linux运维工程师来说非常重要,这将伴随每一个运维工程师的职业生涯.说到正则表达式那么不得不说一下grep和egrep,grep全称是Globally search for a Regular Expression and prin

linux中grep和egrep的用法

1. grep简介 grep (global search regular expression_r(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.Unix的grep家族包括grep.egrep和fgrep.egrep和fgrep的命令只跟grep有很小不同.egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字

Linux正则表达式grep与egrep

Linux正则表达式grep与egrep 正则表达式:它是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.在很多文本编辑器或其他工具里,正则表达式通常被用来检索或替换那些符合某个模式的文本内容.其实正则表达式,只是一种思想,一种表示方法.只要我们使用的工具支持表示这种思想那么这个工具就可以处理正则表达式的字符串.常用的工具有grep, sed, awk,这三个都是针对文本的行才操作的. grep  过滤器语法: grep  [-cinvABC]  'word'  filenam

linux下grep、egrep及相应的正则表达式和用法

     linux下grep.egrep及相应的正则表达式和用法                       一.简介      Linux上文本处理三剑客(引用自马哥教育 ):  grep, egrep, fgrep:文本搜索工具:基于"pattern"对给定文本进行搜索操作:     sed:Stream EDitor,流编辑器,行编辑工具:文本编辑工具:     awk:GNU awk,文本格式化工具:文本报告生成器:         grep (缩写来自Globally se

linux中grep和find的用法区别

linux中grep和find的用法区别 本文章详细的介绍了关于在linux中的grep和find两个命令的用法介绍,以及后面总结了它们两年用法区别哦. 先我们来介绍一下关于grep用法和一些小注意事项 使用过程中,使用最多的参数就是 -v ,但是用着并不爽. 比如说,我想查找一个单词“UserService”,但是像”*.svn” 这种文件就不用显示了,我该怎么做呢? 代码如下 复制代码 grep -r "UserService" ./ | grep -v "svn&quo

12个 Linux 中 grep 命令的超级用法实例

12个 Linux 中 grep 命令的超级用法实例 你是否遇到过需要在文件中查找一个特定的字符串或者样式,但是不知道从哪儿开始?那么,就请grep来帮你吧. grep是每个Linux发行版都预装的一个强有力的文件模式搜索工具.无论何种原因,如果你的系统没有预装它的话,你可以很容易的通过系统的包管理器来安装它(Debian/Ubuntu系中的apt-get和RHEl/CentOS/Fedora系中的yum). $ sudo apt-get install grep #Debian/Ubuntu

Linux中的涉及网络基本知识

Linux中的涉及网络基本知识: TCP/IP: 物理层: 链路层:MAC  从设备到设备主机通信,MAC地址,IP<-->MAC(ARP/RARP)                        MTU: 网络层:IP报文 从源主机到目标主机之间通信,IP地址,IP报文 传输层:从源主机进程到目标主机特定进程之间通信,TCP/UDP 应用层: ISO/OSI:七层 1-4:通信 5-7:资源 会话层 表示层 应用层 TCP:有连接协议,建立逻辑连接 SYN, ACK, FIN, RST, P

Linux中Grep常用的15个例子【转】

转自:https://www.aliyun.com/jiaocheng/1390860.html?spm=5176.100033.1.9.6a1e41e8Pdjynm 摘要:Grep命令主要用于从文件中查找指定的字符串.首先建一个demo_file:$catdemo_fileTHISLINEISTHE1STUPPERCASELINEINTHISFILE.thislineisthe1stlowercaselineinthisfile.ThisLineHasAllItsFirstCharacterO