Linux文本處理三劍客:grep sed awk
grep: Global search Regular expression and Print out the line.
作用:文本搜索工具,根據用戶指定的篩選條件對目標文本進行匹配檢查並打印出符合條件的的行
模式:由正則表達式的元字符及文本字符所編寫出的過濾條件;
使用:grep [OPTIONS] PATTEN [FILE..]
OPTIONS:
--colour=auto:對匹配到的字符串着色後高亮顯示
-i:ignorecase,忽略字符的大小寫;
-o:僅顯示匹配到的字符串;
-V:匹配到的行不顯示,顯示不能被匹配的行
-E:支持使用擴展的正則表達式元字符;
-q,--quite,--silent:靜默模式,即不輸出任何信息;
-A #:after 顯示匹配行的後#行
-B #: before 顯示匹配行的前#行
-C #: context,顯示前後# 行
基本正則表達式元字符
字符匹配:
.:匹配任意單個字符;
[]:匹配指定範圍內的任意單個字符;
[^]:匹配指定範圍外的任意單個字符;
[:diglt:] [:alpha:] [:upper:] [:lower:] [:alnum:] [:punct:] [:space:]
匹配次數:
*:匹配前面字符任意次數,0,1,多次
.*:匹配任意長度的任意字符
\?:匹配其前面字符0次或1次,
\+:匹配其前面字符至少一次;
\{m\}:匹配其前面字符m次
\{m,n\}:匹配其前面字符最少m次,最多n次
\{0,n\}:至多n次
\{m,\}:至少m次
位置錨定:
^:表示以符號後面的字符開頭
$:表示以符號前面的字符結尾
\<或\b:詞首錨定,用於單詞模式的最左側
\>或\b:詞尾錨定,用於單詞模式的最右側
\<PATTEN\>:匹配完整單詞PATTEN
分組及應用:
\(\):將一個或多個字符捆綁在一起,當成一個整體進行處理;
注意:分組括號中的模式匹配到的內容會被正則表達式引擎自動記錄於內部的變量中,這些變量爲:
\1:模式從左側起,第一個左括號以及與之匹配的右括號之間的模式所匹配的字符;
\2:模式從左側起,第二個左括號以及與之匹配的右括號之間的模式所匹配的字符;
\3:...
...
egrep:
支持擴展的正則表達式實現類似於grep文本過濾功能;grep -E
egrep [OPTION] PATTEN [FILE]
選項:
-i,-o,-v,-q,-A,-B,-C
-G:支持基本正則表達式
擴展正則表達式的元字符:
字符匹配:
.:匹配任意單個字符;
[]:匹配指定範圍內的任意單個字符;
[^]:匹配指定範圍外的任意單個字符;
[:diglt:]、[:alpha:]、[:upper:] [:lower:] [:alnum:] [:punct:] [:space:]
次數匹配:
*:任意次
?:0次或者1次
+:1次或者多次
{m}:m次
{m,n}:至少m次,至多n次
{0,n}、{m,}
位置錨定:
^:表示以符號後面的字符開頭
$:表示以符號前面的字符結尾
\<或\b:詞首錨定,用於單詞模式的最左側
\>或\b:詞尾錨定,用於單詞模式的最右側
\<PATTEN\>:匹配完整單詞PATTEN
分組及應用:
():將一個或多個字符捆綁在一起,當成一個整體進行處理;
注意:分組括號中的模式匹配到的內容會被正則表達式引擎自動記錄於內部的變量
或者:
a|b:a或者b
C|cat:C或cat
(C|c)at:Cat或cat