首页 > 代码库 > grep,egrep,,fgrep 与正则

grep,egrep,,fgrep 与正则

一、grep

grep [option] PATTERN [FILE...] 根据模式搜索文本,并将符合模式的文本行显示出来

    Pattern: 文本字符和正则表达式的元字符组合而成的元字符

    -i 忽略大小写

    --color 匹配字符高亮 例子 grep --color ‘root‘ /etc/passwd

    -v 反向显示,匹配到的不显示,显示没有匹配到的行

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

    

alias grep=‘grep --color‘ 



grep ‘root‘ /etc/passwd


二、正则表达式 Regular Expression (REGEXP)

元字符 意义不同于 globy


1).:任意单个字符

 [] :任意单个字符

 [^] :之外的任意单个字符

 [:digit:] [:lower:] [:upter:]

 [:punt:]

2)字符个数:

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

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

?:匹配其前面的字符1次或0次 需要反斜线转义

\{m,n\}:匹配之前的字符至少m次,至多N次  转义,防止命令行展开。

\{1,\}:至少1次

\{0,3\}:至多3次

3)位置锚定

^:行首,此字符后面的任意内容必须出现在行首

$:行尾。

^$:空行

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

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

4)分组

\(\) 


\(ab\)* :ab出现0次或任意次

 


\<root\> 作为root整个单词出现


以数字结尾的行 

[0-9]$ 或 grep ‘[[:digit:]]$‘ /etc/inittab

匹配以一个或多个空格加数字结尾的行

[[:space:]][0-9]$


grep ‘^r..t‘ /etc/passwd


grep ‘y$‘ 以y结束的行


grep ‘r..t‘ /etc/passwd :以r开头,以t结尾,中间有两个字符


ab,aab,acb,adb,amnb


a*b  指示 a出现任意次之后,出现了一个b

a.*b  指示 ab 中间夹了任意长度的任意字符


grep ‘a.*b‘ test.txt

默认模式下,正则匹配工作在贪婪模式下

例如ab中间加了一些字符,其中含有b,但是会匹配最后 一个b


grep ‘a\?b‘ test.txt 整个串不符合,但是局部符合也是可以匹配成功的

所以,能匹配上的有

b

ab

aab

acb

adb

amnb

amnbmnbmnb

















grep,egrep,,fgrep 与正则