文本編輯三劍客之grep
目錄
- 一、正則表達式
- 二、grep:文本過濾器
一、正則表達式
REGEXP:由一類特殊字符及文本字符所編寫的模式,其中有些字符(元字符)不表示字符字面上的意義,而表示控制或者通配的功能。
分類:
- 基本正則表達式:BRE
- 擴展正則表達式:ERE
元字符的分類:
- 字符匹配
- 匹配次數
- 位置錨定
- 分組
(1)基本正則表達式元字符
1>字符匹配
- . :匹配任意單個字符
- [ ]:匹配范圍內的單個字符
- [^]:匹配指定范圍外的任意字符
- \:轉義符,是特殊字符表示成本身的意思,而不是正則表達式的意思
-
特定字符:和中括號的字符集合一塊使用,比如: [[:digit:]]=[0-9]
2>匹配次數
匹配次數用在要指定次數的字符后面,用于指定前面的字符要出現的次數。
- *:匹配前面的字符任意次,包括0次。(貪婪模式:經可能長的匹配)
- .*:任意長度的任意字符
- \?:匹配前面的字符0或者1次(部分匹配就行,如a\?b,ab、aab、amnb都符合)
- +:匹配前面的字符者少1次
- {n}:匹配前面的字符n次
- {m,n}:匹配前面的字符至少m次,至多n次
- {,n}:匹配前面的字符至多n次
- {n,}:匹配前面的字符至少n次
3>位置錨定
定位出現的位置
- ^:行首錨定,用于模式最左側
- $: 行尾錨定,用于模式最右側
-
^pattern$:用于模式匹配整行
- ^$:空白行
- ^[[:space:]]$:空白行
- \<或者\b:詞首錨定,用于單詞模式的左側
- \>或者\b:詞尾錨定,用于單詞模式右側
- \<pattern>:匹配整個單詞
4>分組
分組: () 將 將 一個或多個字符捆綁在一起,當作一個整體進行處理,如:(root)+
- 分組 括號中的模式匹配到的內容會被正則表達式引擎記錄于內部的變量中,這些變量的命名方式為: \1, \2, \3, …
- \1 表示從左側起第一 個左括號以及與之匹配右括號之間的模式所匹配到 的字符
- 后向引用:引用前面的分組括號中的模式所 匹配字符,而非模式本身
-
示例 :
\(string1\+\(string2\)*\) \1 :string1\+\(string2\)* \2 :string2
(2)擴展正則表達式的元字符
用法
egrep = grep -E
egrep [OPTIONS] PATTERN [FILE…]
1>字符匹配
- . 任意單個字符
- [] 指定范圍的字符
- [^] 不在指定范圍的字符
2>次數匹配
- *:匹配前面字符任意次
- ?:0 或1次
- +:1 次或多次
- {m} :匹配m次 次
- {m,n} :至少m ,至多n次
3>位置錨定
- ^ : 行首
- $ : 行尾
- \<, \b : 語首
- \>, \b : 語尾
4>分組
-
()
后向引用:\1, \2, …
5>或者
- | :或者
-
實例:
a|b: a 或b C|cat: C 或cat (C|c)at:Cat 或cat
二、grep
根據模式搜索文本,并將符合模式的文本顯示出來。
pattern(模式):文本字符和正則表達式組合而成的匹配條件
用法
grep [OPTIONS] PATTERN [FILE…]
選項
- -i : 查找時忽略大小寫
- –color:顯示顏色(Centos7是別名)
- -v: 顯示未被匹配到的行
- -o:只顯示匹配到的行
- -e:實現多個選項間的邏輯關系or關系
- -n:顯示匹配的編號
- -c:統計匹配的字符串
- -q:靜默模式,不輸出任何信息
- -w:整行匹配整個單詞
- -A #:after,匹配到字符的前邊#行也輸出到顯示器上
- -B #:before,匹配到字符的后邊#行也輸出到顯示器上
- -C #:context,匹配到字符的前后邊各#行也輸出到顯示器上
- -F:相當于使用fgrep,fgrep不支持正則表達式
- -E:相當于egrep,egrep支持正則表達式
原創文章,作者:oranix,如若轉載,請注明出處:http://www.www58058.com/71725