文字查詢的需要:
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的行。一起用...