天天看點

正規表達式

grep,egrep,fgrep

grep:Global Research Pattern 根據模式,搜尋文本,并将符合模式的文本行顯示出來。

Pattern :由文本字元和正規表達式的元字元組合成的比對。

NAME

       grep, egrep, fgrep - print lines matching a pattern

SYNOPSIS

       grep [options] PATTERN [FILE...]

       grep [options] [-e PATTERN | -f FILE] [FILE...]

[root@localhost 3307]# grep 'root' /etc/passwd

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

-i 忽略大小寫

--color= 加眼神選項

[root@localhost 3307]# alias grep='grep --color'  可以添加别名

-v 顯示沒有模式比對的行

-o 隻顯示被模式比對到的字元串

正規表達式:REGular EXPression ,REGEXP

* 任意長度的任意字元

?任意單個字元

. 比對任意單個字元

.* 任意長度的任意字元

\? 比對其前面的字元1次或0次

\{m,n\} 斜線逃逸字元 比對其前面的字元至少m次,至多n次

    \{1,\}

    \{0,3\}

位置錨定:

^ 錨定行首,此字元後面的任意内容必須出現首行

[root@localhost 3307]# grep '^root' /etc/passwd

$ 錨定行尾,此字元前面的任意内容必須出現行尾

[root@localhost 3307]# grep 'bash$' /etc/passwd

cms:x:501:501::/home/cms:/bin/bash

mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash

^$ 比對空白行

grep -v '^$' /etc/inittab 不顯示空白字元

[] 比對指定範圍内的任意單個字元

[^] 比對指定滿園外的任意單個字元

字元集合

    [:digit:],[:lower:],[:upper:],[:punct:],[:space:]

[root@localhost 3307]# grep '[[:digit:]]$' /etc/inittab 

#   5 - X11

l0:0:wait:/etc/rc.d/rc 0

l1:1:wait:/etc/rc.d/rc 1

l2:2:wait:/etc/rc.d/rc 2

l3:3:wait:/etc/rc.d/rc 3

l4:4:wait:/etc/rc.d/rc 4

l5:5:wait:/etc/rc.d/rc 5

l6:6:wait:/etc/rc.d/rc 6

1:2345:respawn:/sbin/mingetty tty1

2:2345:respawn:/sbin/mingetty tty2

3:2345:respawn:/sbin/mingetty tty3

4:2345:respawn:/sbin/mingetty tty4

5:2345:respawn:/sbin/mingetty tty5

6:2345:respawn:/sbin/mingetty tty6

# Run xdm in runlevel 5

\<或 \broot 錨定詞首,其後面的任意字元必須作為單詞的首部出現  \<root 以root為詞首的 \broot

\> 或 root\b 錨定詞尾,其前面的任意字元必須作為單詞的尾部出現  root\> 以root為詞尾的 root\b

\<root\>

分組

\(\)

    \(ab\)*

\1,\2  引用括号的内的次數

grep '^\1([0-9]):\1.*\1$' /etc/inittab

==================================================================================================

擴充正規表達式

Baseic REGEXP 基本正規表達式

Extended REGEXP 擴充正規表達式  預設工作在貪婪模式下

字元比對

.

[]

[^]

次數比對

*

+ 至少一次,比對其前面的字元至少1次

{m,n} 不需要使用\線轉意

位置錨定字元都一樣

分組:

() 不需要加反斜線 \

\1, \2, \3 ....

或者

a| b   代表 or

grep --color -E 'C|cat' rg  代表比對大寫小寫Cc

fgrep : fast 快速的,不支援正規表達式

繼續閱讀