正則 表達式

grep :   Global search REgular expression and Printout the line.

文本搜索工具。根據用戶指定的文本模式(正則表達式元字符及正常字符組合而成)對目標文件進行逐行搜索,顯示能匹配到的行。

       grep 命令:

              grep [OPTIONS] PATTERN [FILE...]

              --color[=WHEN](輸出是把匹配到的字符是否標記)

                     參數如下:

                     auto

                     always

                           never

wKioL1UciU-xfCWIAACtfSxoyEE553.jpg

              -o 顯示被匹配到的內容(特定環境需要)

例如:使用echo命令輸出一個絕對路徑,使用grep 取出基名。

[root@localhost /]# echo /etc/rc.d/init.d/functions | grep -o -E "[[:alnum:]]+/?$" 

functions


              -i ignore(忽略) 不區分字符大小寫。(適用於單字符)

wKiom1UciBDzBH9iAABqSceIl1A450.jpg


              -v   不能被模式匹配到的(反向選取)

wKiom1UciByygyj-AAFNYT63FHE274.jpg

              -E 使用擴展的正則表達式

 

              -A 

wKioL1UciVTTYwmFAAFejs_-HPc206.jpg

              -B 

wKiom1UciBfRD4wSAAGToFYk6cc899.jpg

              -C  

wKioL1UciVbAXrmQAAI0E0MGRuw998.jpg

正則表達式(REGEXP):元字符和正常字符所書寫的模式。

       基本正則表達式:(grep)

       擴展的正則表達式:(egrep)

              元字符的功能:表達控制或統一匹配。

              元字符匹配:

                     .   匹配任意單個字符。(個數爲一個)

                     []  指定範圍內的單個字符。

                     [^] 指定範圍外的單個字符。

                     [[:digit:]]   數字  ([:digit:]=[0-9])

                     [[:lower:]][[:upper:]]  ,大    寫字母

                     [[:space:]]  空白字符

                     [[:punct:]]  標點符號

                     [[:alnum:]]  所有的字母(包括大小寫)和數字

                     [[:alpha:]]  所有字符(包括大小寫)

                     [[::]]這裏的 :: 需要特特別注意,別打錯了。不然命令行解釋不了。

wKiom1UciBSzAyUxAAEDqUS7cgM841.jpg

              次數匹配:

                            * 任意長度(0-無窮次) 

                             .*  組合表示任意長度任意字符

wKioL1UciVGgr7xAAADfJRzZMAI504.jpg

                             \?  匹配前面字符0-1次;

                             \+  1次或多次

                             \{m\} m

                             \{m,n\} 至少m次,至多n

                             \{0,n\} 至多n

                             \{m,\} 至少m

wKiom1UciBKhFkp2AACmG70cEKs682.jpg

              位置錨定(出現的位置):

                     ^   行首

wKioL1UciVGye3B9AADXxFfk1e8622.jpg

                     $   行尾 

wKiom1UciBOicEnDAACYu7CYkg8878.jpg

                     ^$   連用可以匹配整行。

wKioL1UciVLQswyVAAB2p50RVPQ344.jpg

                     \<   \b 匹配塊首(字符串不包括空格字符)

wKiom1UciBPCg1g8AACqJ9NTRe0429.jpg

                     \>   \b 匹配塊尾

wKioL1UciVKADu5gAAFHjai1IJ8442.jpg

                     \< \>  \b \b  整塊匹配

例子:ifconfig 命令後,匹配出現一次或兩次的數字  wKiom1UciBSzAyUxAAEDqUS7cgM841.jpg

              分組:\(\)

                  注意:分組中的模式,在某次的具體匹配過程中的所匹配的字符,可以被grep 記憶(保存於內置的變量中),還可以被引用。

                  \1:引用,模式中自左而右,由第一個左括號以及與之對應的右括號中的模式所匹配到的內容。

wKioL1UciWnCgdGUAAFtvsyqjbU019.jpg

                  \2:引用,模式中自左而右,由第二個左括號以及與之對應的右括號中的模式所匹配到的內容。

 

擴展的正則表達式:(表現形式不同,意義都一樣。只是有些不用 \ )

              字符匹配:

                .   匹配任意單個字符。(個數爲一個)

                     []  指定範圍內的單個字符。

                     [^] 指定範圍外的單個字符。

                     [[:digit:]]   數字  ([:digit:]=[0-9])

                     [[:lower:]][[:upper:]]  ,大    寫字母

                     [[:space:]]  空白字符

                     [[:punct:]]  標點符號

                     [[:alnum:]]  所有的字母(包括大小寫)和數字

                     [[:alpha:]]  所有字符(包括大小寫)

              次數匹配:

                            * 任意長度(0-無窮次)

                        ?  匹配前面字符0-1次;

                             +  1次或多次

                             {m} m

                             {m,n} 至少m次,至多n

                             {0,n} 至多n

                             {m,}    至少m

              位置錨定(出現的位置):

                     ^

                     $

                     \<  \b    (唯一grep egrep  \ 沒變的)

                     \>  \b    (唯一grep egrep  \ 沒變的)

              分組:

                     ()

                     引用:\1,\2,.....



               或者:

                    a|b

wKioL1UciWXBxpmcAAEdxxl-uWo278.jpg

例子:找出ifconfig命令結果中的1-255之間的數字。

[root@localhost /]# ifconfig | grep -E "\b([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-9][0-9]|25[0-5])\b"

eth0      Link encap:Ethernet  HWaddr 00:0C:29:79:E3:14  

          inet addr:172.16.249.71  Bcast:172.16.255.255  Mask:255.255.0.0

          inet6 addr: fe80::20c:29ff:fe79:e314/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX bytes:7696098 (7.3 MiB)  TX bytes:1477862 (1.4 MiB)

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:65536  Metric:1

 

 

 

 

 

 


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