簡述正則與grep

正則表達式的定義:

計算機科學中,有一種使用單個字符串來描述、匹配一系列符合某個句法規則的字符串,它就叫做正則表達式。

正則表達式的功用:

在文本編輯器中,正則表達式通常被用來檢索、替換那些符合某個模式的文本。許多程序設計語言中,也都支持正則表達式來進行字符串的操作。因此它被廣泛應用到各種計算機語言和領域中。

正則表達式的分類:

正則表達式就其表現形式來說,一般分爲兩類。基本的正則表達式和擴展的正則表達式。下面我們就此展開說明:

    基本正則表達式:

字符匹配:

.匹配任意單個字符

[]匹配指定範圍內的任意單個字符

[0-9],[[:digit:]]所有數字

[a-z],[[:lower:]]所有小寫字母

[A-Z],[[:upper:]]         所有大寫字母

[[:space:]]         空格

[[:punct:]]         所有標點符號

[[:alpha:]]         所有字母

[[:alnum:]]         所有數字和字母

[^]取反

.*匹配任意長度的任意字符

次數匹配:

*前面字符可出現任意次

\?前面字符可出現0次或1次

\{m\}前面字符要出現m次

\{m,n\}前面字符至少出現m次,至多出現n次

\{m,\}前面字符至少出現m次

\{0,n\}前面字符至多出現n次

位置錨定:

^錨定行首

$錨定行尾

^$空白行

\<錨定詞首

\>錨定詞尾

分組引用:

\(\)分組

\#引用


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

    擴展正則表達式:

字符匹配:

.匹配任意單個字符

[]匹配指定範圍內的任意單個字符

[0-9],[[:digit:]]所有數字

[a-z],[[:lower:]]所有小寫字母

[A-Z],[[:upper:]]         所有大寫字母

[[:space:]]         空格

[[:punct:]]         所有標點符號

[[:alpha:]]         所有字母

[[:alnum:]]         所有數字和字母

[^]取反

.*匹配任意長度的任意字符

次數匹配:

*前面字符可出現任意次

?前面字符可出現0次或1次

+前面字符至少出現1次

{m}前面字符要出現m次

{m,n}前面字符至少出現m次,至多出現n次

{m,}前面字符至少出現m次

{0,n}前面字符至多出現n次

位置錨定:

^錨定行首

$錨定行尾

^$空白行

\<錨定詞首

\>錨定詞尾

分組引用:

()分組

\#引用

或者:

#|n或者

---------------------------------------------------------------------------------------------------------------------------------

grep的定義:

grep全稱global search regular expression and print out the line,即全面搜索正則表達式並把行打印出來。

grep的功用:

grep是一種強大的文本搜索工具,能使用正則表達式搜索文本,並把匹配的行打印出來。

grep家族的分類:

Unix的grep家族包括grep、egrep和fgrep。egrep是grep的擴展,支持更多的正則元字符。而fgrep是fixed grep或fast grep,是把所有的字母都看作單詞,所以它不再支持正則表達式的應用。

grep的選項:

-v反向選取

-o僅顯示匹配的字串,而非字串所在的行

-iignore-case,忽略字符大小寫

-E支持使用擴展正則表達式

-A #顯示後面#行

-B #顯示前面#行

-C #顯示前後#行

--color=auto將匹配內容自動添加顏色

---------------------------------------------------------------------------------------------------------------------------------

實例:

1.顯示/proc/meminfo文件中以大寫或小寫S開頭的行;

grep -i '^s' /etc/passwd

        wKiom1PKk-3DvrGNAADRTyNKRBY682.jpg

2.顯示/etc/passwd文件中其默認shell爲非/sbin/nologin的用戶;

grep -v "/sbin/nologin$" /etc/passwd | cut -d: -f1

        wKioL1PKlbTQ0J4WAABY0FAiSMM331.jpg

3.找出/etc/passwd文件中的一位數或兩位數;

grep "\<[0-9][0-9]\?\>" /etc/passwd

        wKioL1PKl9zjxRscAAKKsl2cZGQ411.jpg

4.顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行;

grep "^[[:space:]]\{1,\}" /boot/grub/grub.conf

        wKioL1PKmFaSmAwqAAErmVKo6Ao862.jpg



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章