Linux grep及正規表示式

2021-06-28 11:47:38 字數 1605 閱讀 1382

文字查詢的需要:

grep,egrep,fgrep

grep:根據模式,搜尋文字,並將符合模式的問本行顯示出來、

模式(pattern):文字字元和正規表示式的元字元組合而成的匹配條件

格式:grep [option] pattern file...

-i--color

-v:顯示沒有被模式匹配到的行

-o:只顯示被模式匹配到的串

-e:使用擴充套件正規表示式 =egrep

-a n:匹配行的after n行

-b n:匹配行的before n行

-c n:匹配行的前後 n行

對比之前學過的globbing:

*,?,,[^]

man 7 glob

正規表示式:regular expression,regexp

注意:grep是整行的部分匹配(最長匹配),顯示整行

正規表示式分類:

1、basic regexp:基本

2、extended regexp:擴充套件

元字元:

.表示匹配單個任意字元

:匹配指定範圍內的任意單個字元

[^]:匹配指定範圍外的任意單個字元

字元集合:[:space:][:digit:],[:lower:]...

匹配次數:

*:匹配其前面的字元任意次

a*ba,b,ab,aab

.*:任意長度的任意字元

?:匹配其前面的字元1次或0次(一般要加乙個轉譯字元\?)

\:匹配其前面的字元至少m次,至多n次

位置錨定:

^:錨定行首,此字元後面的任意內容必須出現在行首

$:錨定行尾,此字元後面的任意內容必須出現在行尾

eg:grep '^a.*a$' test.txtt #以a開頭和結尾的行

^$:空白行

\《或\b:其後面的任意字元必須作為單詞首部出現

\>或\b:其前面的任意字元必須作為單詞的尾部出現 

eg:\:單詞必須是root,rootroot也不行

分組:\(\)

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

分組還有乙個重要的用法是實現後向引用:

\1:引用第乙個括號分組

擴充套件的正規表示式:

字元匹配:.

[^]次數匹配:

*?:不用\

+:匹配其前面的字元至少1次

位置錨定:^$

\<

\>

分組:():分組

\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])\>\.)(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-9])\>\.)' test.txt

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

fgrep:不支援正規表示式,但是執行速度快

Linux grep及正規表示式

grep linux系統上處理文字的三劍客 grep 文字過濾 模式 pattern 工具 grep egrep fgrep sed 流編輯器,文字編輯工具 awk linux上是gawk,文字報告生成器 可以把文字以更美觀的形式顯示出來 grep 作用 文字搜尋工具,根據使用者指定的 模式 對目標...

linux grep 正規表示式

grep正規表示式元字符集 錨定行的開始 如 grep 匹配所有以grep開頭的行。錨定行的結束 如 grep 匹配所有以grep結尾的行。匹配乙個非換行符的字元 如 gr.p 匹配gr後接乙個任意字元,然後是p。匹配零個或多個先前字元 如 grep 匹配所有乙個或多個空格後緊跟grep的行。一起用...

linux grep 正規表示式

grep正規表示式元字符集 錨定行的開始 如 grep 匹配所有以grep開頭的行。錨定行的結束 如 grep 匹配所有以grep結尾的行。匹配乙個非換行符的字元 如 gr.p 匹配gr後接乙個任意字元,然後是p。匹配零個或多個先前字元 如 grep 匹配所有乙個或多個空格後緊跟grep的行。一起用...