1. 程式人生 > >grep之正則表達式的理解及應用

grep之正則表達式的理解及應用

grep

正則表達式在本周學習中是個難點和重點,其中難免會有很多坑,也難免會不停的往裏跳,當跳的比較多了也就長記性了,通過很多次練習慢慢也就能發現其中暗藏玄機,成功的避開大坑選擇往小坑裏跳了,我相信在以後的學習中會不斷進步、勤加練習終究會跳出來的。好了,以下是本人對正則表達式的一點理解,如有錯誤之處請聯系我,會修改和學習的。

一、正則表達式之grep.

正則表達式是一種符號表示法,用於識別文本模式。Linux處理正則表達式的主要程序是grep。grep搜索與正則表達式匹配的,並將結果輸送至標準輸出。

(1)正則表達式之匹配模式。

①格式

grep按下述方式接受選項和參數(其中,REGEXP

表示正則表達式)

grep [option] REGEXP file

②具體選項



選項 含義 功能描述
-iignore case忽略大小寫
-vinvert match不匹配匹配的
-lfile-with-match輸出匹配的文件名
-Lfile-without-match輸出不匹配的文件名
-ccount輸出匹配的數目(行數)
-nnumber輸出匹配行的同時在前面加上文件名及在文件名中的行數
-hno-filename抑制文件名的輸出

③舉例說明


1、 顯示/proc/meminfo文件中以大小s開頭的行

技術分享

2、顯示/proc/meminfo文件中不以s開頭的行

技術分享

3、顯示/proc/meminfo文件中大s開頭的行數

技術分享

4、顯示/proc/meminfo文件中大s開頭的行數並且在文件名上加上行數

技術分享

華麗的分割線


二、下表包含了元字符的列表以及它們在正則表達式上下文中的行為:

字符
說明
^匹配輸入字符串開始的位置。如果設置了 RegExp 對象的 Multiline 屬性,^ 還會與“\n”或“\r”之後的位置匹配。
$匹配輸入字符串結尾的位置。如果設置了 RegExp 對象的 Multiline 屬性,$ 還會與“\n”或“\r”之前的位置匹配。
*零次或多次匹配前面的字符或子表達式。例如,zo* 匹配“z”和“zoo”。* 等效於 {0,}。
+
一次或多次匹配前面的字符或子表達式。例如,“zo+”與“zo”和“zoo”匹配,但與“z”不匹配。+ 等效於 {1,}。
?零次或一次匹配前面的字符或子表達式。例如,“do(es)?”匹配“do”或“does”中的“do”。? 等效於 {0,1}。
{n}n 是非負整數。正好匹配 n 次。例如,“o{2}”與“Bob”中的“o”不匹配,但與“food”中的兩個“o”匹配。
{n,}n 是非負整數。至少匹配 n 次。例如,“o{2,}”不匹配“Bob”中的“o”,而匹配“foooood”中的所有 o。“o{1,}”等效於“o+”。“o{0,}”等效於“o*”。
{n,m}M 和 n 是非負整數,其中 n <= m。匹配至少 n 次,至多 m 次。例如,“o{1,3}”匹配“fooooood”中的頭三個 o。‘o{0,1}‘ 等效於 ‘o?‘。註意:您不能將空格插入逗號和數字之間。
|或的意思。例如:"AAA|BBB"滿足的例子AAA、BBBpp
.任意字符。例如:"a.c"滿足的例子abc、fapcc
()將候選的所有元素放在()內,用|隔開。例如:"a(1|2|3)bc"滿足的例子a1bc、mba3bcd
[:alnum:]字母和數字,與[A-Za-z0-9]等價
[:alpa:]字母,與[A-Za-z]等價
[:digit:]數字,與[0-9]等價
[:xdigit:]十六進制字符,與[0-9A-Fa-f等價]
[:blank:]空格和制表符
[:lower:]小寫字母
[:upper:]大寫字母

grep之正則表達式的理解及應用