Linux-grep及Regex

來源:互聯網
上載者:User
文本尋找的需要:
grep,egrep,fgrep
grep:根據模式,搜尋文本,並將符合模式的問本行顯示出來、
模式(Pattern):文本字元和Regex的元字元組合而成的匹配條件
格式:grep [option] PATTERN file...
-i
--color
-v:顯示沒有被模式比對到的行
-o:只顯示被模式比對到的串
-E:使用擴充Regex =egrep
-A n:匹配行的after n行
-B n:匹配行的before n行
-C n:匹配行的前後 n行
對比之前學過的globbing:
*,。,[],[^]
man 7 glob


Regex:Regular Expression,REGEXP
注意:grep是整行的部分匹配(最長相符),顯示整行


Regex分類:
1、Basic REGEXP:基本
2、Extended REGEXP:擴充




元字元:
.表示匹配單個任一字元
[]:匹配指定範圍內的任意單個字元
[^]:匹配指定範圍外的任意單個字元
字元集合:[:space:][:digit:],[:lower:]...


匹配次數:
*:匹配其前面的字元任意次
 a*b
 a,b,ab,aab




.*:任意長度的任一字元
。:匹配其前面的字元1次或0次(一般要加一個轉譯字元\。)
\{m,n\}:匹配其前面的字元至少m次,至多n次


位置錨定:
^:錨定行首,此字元後面的任意內容必須出現在行首
$:錨定行尾,此字元後面的任意內容必須出現在行尾
eg:grep '^a.*a$' test.txtt #以a開頭和結尾的行
^$:空白行


\<或\b:其後面的任一字元必須作為單詞首部出現
\>或\b:其前面的任一字元必須作為單詞的尾部出現 
eg:\<root\>:單詞必須是root,rootroot也不行


分組:
\(\)
eg:\(ab\)*,ab可以出現任意次 




分組還有一個重要的用法是實現後向引用:
\1:引用第一個括弧分組




擴充的Regex:
字元匹配:
.
[]
[^]


次數匹配:
*
?:不用\
+:匹配其前面的字元至少1次
{m,n}


位置錨定:
^
$
\<
\>


分組:
():分組
\1,\2,\3...


或者
|:表示or


練習:
匹配1-255的數字
egrep '\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-9])\>' test.txt


匹配255.255.255.255這樣類型的數字串
egrep '(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-9])\>\.){3}(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-9])\>\.)' test.txt


為什麼不可以後面引用呢。


fgrep:不支援Regex,但是執行速度快



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.