Linux学习之grep及正则表达式

1、grep:根据模式搜索文本,并将符合模式的文本行打印出来

使用基本正则表达式定义的模式来过滤文本的命令

grep 选项 模式(正则表达式) 参数

模式:由文本字符和正则表达式的元字符组合而成的匹配条件

-E:扩展正则表达式

-i:不区分大小写

-w:匹配整个单词

-x:匹配整行

-v:显示不匹配的行

--colour/--color:高亮显示匹配字符串

-A:打印匹配本身以及后面的几行

-B:打印匹配本身以及前面的几行

-C:打印匹配本机以后前后的几行

-o:只显示匹配到的字符串

-c:显示匹配了多少次

-n:在行首显示行号


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

基本正则表达式(Basic REGEXP(REgular EXPression)):是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

  元字符:指在正则表达式中起特殊意义的字符,元字符和shell的通配符基本相同,但是某些字符有着不同的意义

  正则表达式默认是以贪婪模式匹配(尽可能长的去匹配)

  ‘搜寻字符串‘是正则表达式,为了避免shell的元字符对正则表达式的影响,使用‘‘单引号括起来,尽量避免使用""双引号,引号有时可省略

  . 匹配任意单个字符(在shell通配符中用?来表示)

  [] 匹配指定范围内的任意单个字符

  [^] 匹配指定范围外的任意单个字符(和shell统配符相同)

  字符集:

  [:digit:] 数字

  [:lower:] 小写字母

  [:upper:] 大写字母

  [:punct:] 标点符号

  [:space:] 空格

  [:alpha:] 大小写字母 

  [:alnum:] 数字和大小写字母

  匹配次数:

  * 匹配其前面的字符任意次,可以是0次(shell通配符代表匹配任意长度的任意字符)

  .* 匹配任意字符任意次

  \? 匹配其前面的字符1次或0次

  \{m,n\} 匹配其前面的字符最少m次,最多n次

  位置锚定:

  ^ 锚定行首,次字符后面的任意内容必须出现在行首

  $ 锚定行尾,次字符前面的任意内容必须出现在行尾

  ^$ 空白行

  \<或\b 锚定词首,其后面的任意字符必须作为单词的首部出现

  \>或\b 锚定词尾,其前面的任意字符必须作为单词的尾部出现

  分组:后向引用功能,

  \(\)

  \1 引用第一个括号以及与之对应的右括号所包括的所有内容

  \2

  \3

 

扩展正则表达式(EXtended REGEXP):egrep(匹配扩展正则表达式)

使用grep -E或egrep命令(egrep在一些发行版中已经不再使用,请使用grep -E)

在扩展正则表达式中元字符意义基本和基本正则表达式相同

次数匹配多一个元字符+,代表匹配其前的字符至少一次

分组();比基本正则表达式更明确

引入或者的概念用|表示

例如a|b代表a或b,(A|B)C代表AC或BC

fgerp:fast gerp(不支持正则表达式)

命令选项和grep相同

fgerp命令和grep、egrep不同的是,因为他搜索字符串而不是搜索匹配表达式的模式,fgerp命令使用快速的压缩算法。当处理大型文件时,fgerp比grep要快,当然fgerp自然比grep功能要弱。

本文出自 “杆儿男” 博客,请务必保留此出处http://wtime.blog.51cto.com/8829658/1530763

Linux学习之grep及正则表达式,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。