grep:global research expression print
是一種強大的文本搜索工具。根據關鍵字匹配行,然后打印含有關鍵字的行的內容。
基本格式:grep “關鍵字”
grep “關鍵字” 目錄 在該目錄下找含有關鍵字的文件。
例:
幾個常見參數:
-c 計算找到關鍵字的次數。
-i 忽略大小寫。
-v 把沒有匹配到的行顯示出來。
-o 只顯示被匹配到的字符串
-A num 只顯示匹配到的那一行的后幾行。
-B num 只顯示匹配到的那一行的前幾行。
正則表達式:
. 任意單個字符
例:
a.b 表示以a開頭,中間為一個任意字符,以b結尾的三個字符。
* 前面一個字符在此重復零次或更多次。
例:
a*b 表示a出現任意次,b出現一次的行。(可出現的情況ab、b(a在此出現0次)、aab)
aa*b 第一個a表示以a開頭,第二個a表示a出現任意次,最終以b結尾的字符(可出現的情況有ab、aab、aaab,不可能出現b)
[范圍] 這個字符在方括號的范圍內。
[^范圍] 該字符不在這個范圍的任意字符。
.*任意長度的字符
a.*b 表示以a開頭,以b結尾,a與b中間有任意長度的任意字符組成的字符串。
? 匹配前面的字符出現一次或0次,用的時候要有轉義字符 (\?)
add:表示a出現一次,第二個d結尾,第二個d表示a出現0次,d結尾。
d:表示a出現0次,d結尾。
{m,n\}:前面一個字符最少出現m次,最多出現n次。使用時要添加轉義字符( \{m,n\} )
a\{3,9\}d:表示a要出現3~9次,d結尾的字符串。
aaaaaaad:表示a出現7次(在3次和9次之間),d結尾的字符串。
^ 行首 “^root”:匹配以root開頭的行。
$ 行尾 “root$”:匹配以root結尾的行。
^任意字符$ 只表示一行中只有該字符串(開頭沒有空格,結尾也沒有空格)的行。
例:
^root$ 只表示這一行從開頭只有一個root的字符,結尾沒空格。
^$ 空行(和^ $是有區別的,空格也是特殊的字符。)
\<任意字符:詞首。以該詞開頭
任意字符\>:詞尾。以該詞結尾。
注:正則表達式具有貪婪模式,它會盡可能長的匹配文本,典型情況如下: