linux文本處理杏彩平臺出租工具之grep與正則表達式語法
介紹
Linux 文本處理三劍客之一,文件過濾工具(另外兩劍客為sed:文本編輯工具,awk:文本報告生成器) 擁有著,根據用戶指定的“模式”對目標文本逐行進行匹配檢查;打印匹配到的行的功能。
使用
Grep除了正常的字符使用之外 還可以運用正則表達式字符。
Grep的重要命令選項
--color=auto 關鍵字高亮顯示(centos7默認)
*-v 關鍵字 顯示不包含關關鍵字的行,取反
*-i 關鍵字 忽略關鍵字的大小寫
-n 顯示的結果每行前增加行號
-c 僅顯示找出的結果的行數
*-o 僅顯示匹配到的關鍵字,不顯示同行的其他內容
*-w 關鍵字 匹配整個單詞
*-E 等於egrep 使用擴展正則表達式
正則表達式
正則表達式regexp又稱規則表達式,是由一類特殊字符及文本編寫的,其中有些字符有些字符(元字符)不表示字符字面意義,而表示控制或通配的功能。就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個“規則字符串”,這個“規則字符串”用來表達對字符串的一種過濾邏輯。正則表達式是一種文本模式,模式描述在搜索文本時要匹配的一個或多個字符串。
正則表達式的使用
具有特殊意義的字符元字符有著 字符匹配,匹配次數、位置錨定、分組四個功能。掌握了這四個功能 在運用正則表達式的時候會事半功倍
以下四個功能處理的都是元字符。
1.字符匹配:
當我們想在文本中查找某些內容時,首先就需要進行文本搜索,這時就需要對部分字符進行匹配從而找到想要的內容。
.在元字符裏表示匹配任意的一個單個字符
[] 匹配指定範圍內的任意單個字符
[^] 匹配指定範圍外的任意單個字符
[:alnum:] 字母和數字
[:alpha:] 代表任何英文大小寫字符,亦即 A-Z, a-z
[:blank:] 空白字符(空格和制表符)
[:space:] 水平和垂直的空白字符(比[:blank:]包含的範圍廣)
[:cntrl:] 不可打印的控制字符(退格、刪除、警鈴...)
[:digit:] 十進制數字 [:xdigit:]十六進制數字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 標點符號
- 匹配次數
- 表示前面的字符匹配任意次,可以0次,可以無限,貪婪模式
.* 表示任意內容任意長度
\? 表示前面的內容匹配0次或1次
+ 表示前的的內容匹配1次以上
{n}匹配前面的字符n次
{m,n}匹配前面的字符至少m次,至多n次
{,n}匹配前面的字符至多n次
{n,}匹配前面的字符至少n次
3.位置錨定 :
使您能夠將正則表達式固定到行首或行尾。它們還使您能夠創建這樣的正則表達式,這些正則表達式出現在一個單詞內、在一個單詞的開頭或者一個單詞的結尾。
定位符用來描述字符串或單詞的邊界,^ 和 $ 分別指字符串的開始與結束,\b 描述單詞的前或後邊界,\B 表示非單詞邊界。
^ 行首錨定,用於模式的最左側
$ 行尾錨定,用於模式的最右側
^PATTERN$ 用於模式匹配整行
^$ 空行
^[[:space:]]*$ 空白行
\< 或\b 詞首錨定,用於單詞模式的左側\>或\b 詞尾錨定;用於單詞模式的右側
\<PATTERN\> 匹配整個單詞
4.分組
當前方字符通過() 綁定在一起時,此時的字符可以當做一個整體來進行操作。
分組括號中的模式匹配到的內容會被正則表達式引擎記錄於內部的變量中,這些變量的命名方式為 : \1, \2, \3, ...,
\1 表示從左側起第一個左括號以及與之匹配右括號之間的模式所匹配到的字符。
此時就可以運用後項引用來實現某些功能,例如:
‘^(bin).*\1$’其中的\1就表示杏彩平臺出租QQ2952777280【話仙源碼論壇】hxforum.com【木瓜源碼論壇】papayabbs.com 前面的第一個括號包裹起來的bin
或者:|
示例:a|b: a或b
特殊的元字符
符號
描述
*
字符出現的次數0或多次
.
任意的單一字符
^/$
開頭或結尾
{n}
表示匹配n次
[]
括號裏的任意單一字符
\
轉譯符
+
字符出現一次或多次
?
出現0次或1次
()
分組表示
\n
後項引用
{m,n}
出現的次數高於m小於n
總結:正則表達式的運用可以在多種計算機語言中使用,他是一種規則的定義,來實現對字符串的操作。
linux文本處理杏彩平臺出租工具之grep與正則表達式語法