首页 > 技术文章 > linux基础之grep

jnba 2019-03-13 13:35 原文

grep,egrep,fgrep

grep:根据模式搜索文本,并将符合模式的文本行显示出来

grep [OPTIONS] PATTERN [FILE...]

-i:忽略大小写

--color:以高亮颜色显示

-v:显示没有被模式匹配的行

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

-E:使用扩展正则表达式

-A #:当某一行被匹配到,不但显示这一行,还显示其后面#行

-B #:当某一行被匹配到,不但显示这一行,还显示其前面#行

-C #:当某一行被匹配到,不但显示这一行,还显示其前后面#行

 

grep正则表达式(基本正则表达式)(默认情况下正则表达式工作在贪婪模式下)

.:匹配任意单个字符

*:匹配其前面的字符任意次

例子:a,b,ab,aab,acb,adb,amnb

 a*b:b,ab,aab,

 a.*b:ab,aab,acb,adb,amnb(a开头b结尾的字符串)

.*:任意长度的任意字符

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

a\?b:含有ab或b的行

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

\{1,\}:至少出现一次

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

[^]:匹配指定范围外的任意单个字符

字符集合:[:digit:]数字 [:lower:]小写字母 [:upper:]大写字母 [:punct:]标点符号 [:spcce:]空白字符 [:alpha:]所有字母 [:alnum:]所有数字字母

例子:grep [[:digit]] /a.txt  查找出所有包含数字的行

 

位置锚定:

^:锚定行首,此字符后面的字符必须出现在行首

$:锚定行未,此字符前面的字符必须出现在行未

^$:空白行

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

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

 

分组

\(\)

例子:\(ab\)*:ab整体出现n次。

后向引用

 

以上正则表达式为基本正则表达式,grep默认支持基本正则表达式。

 

扩展正则表达式

.:匹配任意单个字符

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

[^]:匹配指定范围外的单个字符

 

次数匹配

*:匹配前面的字符任意次

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

+:匹配其前字符至少一次

{m,n}:匹配其前面的字符至少m次,之多n次

|:或者 例子:C|cat 匹配C或cat      (C|c)at 匹配Cat或cat

():分组

 

grep -E = egrep :即egrep默认支持扩展正则表达式

推荐阅读