[Shell] awk學習(3)-regular expression 正規表示式
A regular expression is used as a pattern by enclosed it in slashes.
^ :this matches the begining of a string (awk '/^J/' ff2 :以J開頭)
$ :this matches only at the end of the string (awk '/7$/' ff2:以7結尾)
. :matches any single character (awk '/J.n/' ff2:以J為首,n為尾,中間只有一個字元的匹配)
[...]:matches any one of the character that are enclose in the square brackets. (awk '/J[au]/' ff2 :以Ja或者Ju匹配的)
[^...]:like [...] except character not in the square bractets. (awk '/J[^u]/' ff2 :除去Ju的匹配)
| :means or (awk '/^O|0$/' ff2 :以O開始,0結尾) (awk '$1~/^O|g$/' ff2 :第一個域以O開始,g結尾)
(...):匹配組(awk '$1~/(foo|net)/' ff1 :第一個域包含foo或者net的)
* :表示匹配之前字串>=0次 (awk '/f[o]*/' ff1 :匹配o >=0次)
+ :表示匹配之前的字串>0次,至少又一次 (awk '/f[o]+/' ff1 :匹配o >0次)
? :表示匹配之前的字串0次或者1次,0或者1次 (awk '/Ma?/' ff2)
{n} :表示匹配之前的字串n次 (wh{3} matches whhh 其他的wh,whh,w都是錯誤的)
{n,} :表示匹配之前的字串>=n次 (wh{3,} matches whhh,whhhh,whhhhh.....)
{n,m}:表示匹配之前的字串>=n,<=m次 (wh{3,5} matches whhh,whhhh,whhhhh)
[a-z]:表示a-z的任意字元 [a-dx-z]=[abcdxyz]
1.整行進行表示式匹配
[/tmp/test]# awk '/foo/{print $2}' ff1
555-1234
555-6699
555-6480
555-2127
2.指定域進行表示式匹配
~/exp/匹配
!~/exp/不匹配
[/tmp/test]# awk '$2~/12/' ff1 #匹配第二域中有12的行
[/tmp/test]# awk '$2!~/12/' ff1 #匹配第二域中不存在12的行
3.大小寫忽略
[/tmp/test]# awk 'tolower($1)~/ja/' ff2
Jan 13 25 15 115
Jan 21 36 64 620
另一種方法是使用gawk 的IGNORECASE=1
特殊字元的特殊意義
[:alnum:] 代表英文大小寫位元組及數字,亦即 0-9, A-Z, a-z
[:alpha:] 代表任何英文大小寫位元組,亦即 A-Z, a-z
[:blank:] 代表空白鍵與 [Tab] 按鍵兩者
[:cntrl:] 代表鍵盤上面的控制按鍵,亦即包括 CR, LF, Tab, Del.. 等等
[:digit:] 代表數字而已,亦即 0-9
[:graph:] 除了空白位元組 (空白鍵與 [Tab] 按鍵) 外的其他所有按鍵
[:lower:] 代表小寫位元組,亦即 a-z
[:print:] 代表任何可以被列印出來的位元組
[:punct:] 代表標點符號 (punctuation symbol),亦即:" ' ? ! ; : # $...
[:upper:] 代表大寫位元組,亦即 A-Z
[:space:] 任何會產生空白的位元組,包括空白鍵, [Tab], CR 等等
[:xdigit:] 代表 16 進位的數字型別,因此包括: 0-9, A-F, a-f 的數字與位元組
^ :this matches the begining of a string (awk '/^J/' ff2 :以J開頭)
$ :this matches only at the end of the string (awk '/7$/' ff2:以7結尾)
. :matches any single character (awk '/J.n/' ff2:以J為首,n為尾,中間只有一個字元的匹配)
[...]:matches any one of the character that are enclose in the square brackets. (awk '/J[au]/' ff2 :以Ja或者Ju匹配的)
[^...]:like [...] except character not in the square bractets. (awk '/J[^u]/' ff2 :除去Ju的匹配)
| :means or (awk '/^O|0$/' ff2 :以O開始,0結尾) (awk '$1~/^O|g$/' ff2 :第一個域以O開始,g結尾)
(...):匹配組(awk '$1~/(foo|net)/' ff1 :第一個域包含foo或者net的)
* :表示匹配之前字串>=0次 (awk '/f[o]*/' ff1 :匹配o >=0次)
+ :表示匹配之前的字串>0次,至少又一次 (awk '/f[o]+/' ff1 :匹配o >0次)
? :表示匹配之前的字串0次或者1次,0或者1次 (awk '/Ma?/' ff2)
{n} :表示匹配之前的字串n次 (wh{3} matches whhh 其他的wh,whh,w都是錯誤的)
{n,} :表示匹配之前的字串>=n次 (wh{3,} matches whhh,whhhh,whhhhh.....)
{n,m}:表示匹配之前的字串>=n,<=m次 (wh{3,5} matches whhh,whhhh,whhhhh)
[a-z]:表示a-z的任意字元 [a-dx-z]=[abcdxyz]
1.整行進行表示式匹配
[/tmp/test]# awk '/foo/{print $2}' ff1
555-1234
555-6699
555-6480
555-2127
2.指定域進行表示式匹配
~/exp/匹配
!~/exp/不匹配
[/tmp/test]# awk '$2~/12/' ff1 #匹配第二域中有12的行
[/tmp/test]# awk '$2!~/12/' ff1 #匹配第二域中不存在12的行
3.大小寫忽略
[/tmp/test]# awk 'tolower($1)~/ja/' ff2
Jan 13 25 15 115
Jan 21 36 64 620
另一種方法是使用gawk 的IGNORECASE=1
特殊字元的特殊意義
[:alnum:] 代表英文大小寫位元組及數字,亦即 0-9, A-Z, a-z
[:alpha:] 代表任何英文大小寫位元組,亦即 A-Z, a-z
[:blank:] 代表空白鍵與 [Tab] 按鍵兩者
[:cntrl:] 代表鍵盤上面的控制按鍵,亦即包括 CR, LF, Tab, Del.. 等等
[:digit:] 代表數字而已,亦即 0-9
[:graph:] 除了空白位元組 (空白鍵與 [Tab] 按鍵) 外的其他所有按鍵
[:lower:] 代表小寫位元組,亦即 a-z
[:print:] 代表任何可以被列印出來的位元組
[:punct:] 代表標點符號 (punctuation symbol),亦即:" ' ? ! ; : # $...
[:upper:] 代表大寫位元組,亦即 A-Z
[:space:] 任何會產生空白的位元組,包括空白鍵, [Tab], CR 等等
[:xdigit:] 代表 16 進位的數字型別,因此包括: 0-9, A-F, a-f 的數字與位元組
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24237320/viewspace-2080596/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 正規表示式(regular expression)Express
- Oracle正規表示式(regular expression)OracleExpress
- 正規表示式regular expression詳述Express
- oracle中的正規表示式(regular expression)OracleExpress
- vi 中的正規表示式 (Regular Expression)(轉)Express
- [LeetCode] Regular Expression Matching 正規表示式匹配LeetCodeExpress
- oracle的正規表示式(regular expression)簡單介紹OracleExpress
- Shell—擴充套件正規表示式(awk、sort、uniq、tr工具)套件
- 正規表示式學習
- [LeetCode Python3]10. Regular Expression Matching手把手詳解——正規表示式(一)LeetCodePythonExpress
- 正規表示式的學習
- Oracle正規表示式學習Oracle
- 學習Java:正規表示式Java
- Go 正規表示式學習Go
- shell指令碼正規表示式指令碼
- Shell程式設計基礎學習之一:正規表示式程式設計
- 正規表示式學習和練習
- 正規表示式學習筆記筆記
- 正規表示式入門學習
- 如何快速學習正規表示式
- 正規表示式學習總結
- JavaScript學習1:正規表示式JavaScript
- shell指令碼(14)-正規表示式指令碼
- shell基礎 — 基本正規表示式
- 『忘了再學』Shell基礎 — 24、Shell正規表示式的使用
- 通過js正規表示式例項學習正規表示式基本語法JS
- 正規表示式例項蒐集,通過例項來學習正規表示式。
- 學習正規表示式(js、C#)JSC#
- java 正規表示式語法學習Java
- 你應該學習正規表示式
- Ruby學習筆記-正規表示式筆記
- 正規表示式學習筆記一筆記
- 簡單學習 JavaScript 正規表示式JavaScript
- PERL學習筆記---正規表示式筆記
- 正規表示式學習筆記 (轉)筆記
- 正規表示式學習(2)---字元特性字元
- 正規表示式(初學)
- 小豬的Python學習之旅 —— 3.正規表示式Python