文本處理工具:git
Linux上文本處理三劍客:正則表達式
grep:文本過濾工具(以模式過濾:pattern)express
sed:stream editor,流編輯器,文本編輯工具編輯器
awk:Linux上的實現爲gawk,文本報告生成器(格式化文本)ide
正則表達式:regular expression REGEXP工具
由一類特殊字符及文本字符所編寫的模式,其中有些字符不表示其字面意義,ui
而是用於表示控制或通配的功能;spa
分兩類:字符串
基本正則表達式:BREit
擴展正則表達式:ERE
元字符:\(hello[[:space:]]\+\)\+
grep:global search regular expression and print out the line.
做用:文本搜索工具,根據用戶指定的"模式(過濾文件)"對目標文本逐行進行匹配檢查,打印匹配到的行
模式:由正則表達式的元字符及文本字符所編寫出的過濾條件
正則表達式引擎:
grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
OPTIONS:
--color=auto:對匹配到的文本着色後高亮顯示
-i:ignorecase,忽略字符大小寫
-o:僅顯示匹配到的字符自己
-v:--invert-match:顯示不能被模式匹配到的行
-E:支持使用擴展的正則表達式元字符
-q:--quiet,--silent:靜默模式,即不輸出任何信息
-A #:after,後 # 行
-B #:before,前#行
-C #:context,先後各#行
基本正則表達式元字符:
字符匹配:
.:匹配任意單個字符
[]:匹配指定範圍內的任意單個字符
[^]:匹配指定範圍外的任意單個字符
[:digit:]
[:lower:]
[:upper:]
[:alpha:]
[:alnum:]
[:punct:]
[:space:]
[:digit:]
匹配次數:用在要指定其出現的次數的字符後面,用於限制其前面字符出現的次數
默認工做於貪婪模式
*:匹配其前面字符任意次;0,1,或屢次
例如:grep "x*y" abxy aby xxxxxxy yab
.*:匹配任意長度的任意字符
\?:匹配其前面的字符0次或一次;即其前面的字符是無關緊要的
\+:匹配其前面的字符一次或屢次;即其前面的字符要出現至少一次
\{m\}:匹配前面字符m次
\{m,n\}:匹配其前面的字符至少m次,至多n次
\{0,n\}:至多n次
\{m,\}:至少m次
位置錨定
^:行首錨定,用於模式的最左側
$:行尾錨定,用於模式的最右側
^PATHERN$:匹配整行
^$:空白行
^[[:space:]]*$:空白行或包含空白字符的行
單詞:非特殊字符組成的連續字符(字符串)都稱爲單詞;
\<或\b:錨定詞首,用於單詞的左側
\>或\b:錨定詞尾,用於單詞的右側
\<PATTERN\>:匹配完整單詞
分組及引用:
\(xy\)*ab
\(\):將一個或多個字符捆綁在一塊兒,當作一個總體進行處理
Note:分組括號中的模式匹配到的內容會被正則表達式引擎自動記錄於內部的變量中
這些變量爲:
\1:模式從左側起,第一個左括號以及與之匹配的右括號之間的模式所匹配到的字符
\2:模式從左側起,第二個左括號以及與之匹配的右括號之間的模式所匹配到的字符
\3
...
egrep:支持擴展的正則表達式實現相似於grep文本的過濾功能
# egrep 或者
# grep -E
擴展正則表達式的元字符:
字符匹配:
.:任意單個字符
[]:匹配指定範圍內的任意單個字符
[^]:匹配指定範圍外的任意單個字符
次數匹配:
*:任意次:0,1,或屢次;
?:0或1次;其前的字符是無關緊要的
+:其前字符至少1次;
{m}:其前的字符m次
{m,n}:
{0,n}:
{m,}:
位置錨定:
^:行首錨定;
$:行尾錨定;
\<,\b:詞首錨定
\>,\b:詞尾錨定
分組及引用:
():分組;括號內的模式匹配到的字符會被記錄於正則表達式引擎的內部變量中
後向引用;\1 \2 \3...
或者
a|b:a或者b;或者整個左側或右側
C|cat:C或者cat
(C|c)at:Cat或者cat