1.作用
Linux系統中grep命令是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹 配的行打印出來。grep全稱是Global Regular Expression Print,表示全局正則表達式版本,它的使用權限是所有用戶。
2.格式
grep [options]
3.主要參數
[options]主要參數:
-c:只輸出匹配行的計數。
-I:不區分大 小寫(只適用於單字符)。
-h:查詢多文件時不顯示文件名。
-l:查詢多文件時只輸出包含匹配字符的文件名。
-n:顯示匹配行及 行號。
-s:不顯示不存在或無匹配文本的錯誤信息。
-v:顯示不包含匹配文本的所有行。
pattern正則表達式主要參數:
\: 忽略正則表達式中特殊字符的原有含義。^:匹配正則表達式的開始行。
$: 匹配正則表達式的結束行。
\<:從匹配正則表達 式的行開始。
\>:到匹配正則表達式的行結束。
[ ]:單個字符,如[A]即A符合要求 。
[ - ]:范圍,如[A-Z],即A、B、C一直到Z都符合要求 。
.:所有的單個字符。
* :所有字符,長度可以為0。
{n}:必須匹配n次。
{n,}:必須匹配n次或n次以上。
{n,m}:匹配次數在n到m之間,包括n和m。
4.實例
1.輸出有"the"的行號
$grep -n 'the' a.txt
2.輸出沒有"the"的行號
$grep -nv 'the' a.txt
3.利用[]搜索集合元素,[]表示任意一個字符,例如[abc]可以表示a,b或者c
$grep -n 't[abc]ab' a.txt
可以用^符號做[]內的前綴,表示除[]內的字符之外的字符。比如搜素oo前沒有g的字符串所在的行,使用'[^g]oo'做搜索字符串
$grep -n '[^g]oo' a.txt
[]可以用范圍表示,比如[a-z]表示小寫字符,[0-9]表示0-9的數字,[A-Z]表示大寫字母。[a-zA-Z0-9]
$grep -n 't[]ab' a.txt
4.搜索空行,使用'^$'表示只有行首和行尾的空行
$grep -n '^$' a.txt
5.搜索非空行,使用'^$'表示只有行首和行尾的空行
$grep -nv '^$' a.txt
6.搜索包含兩個oo的行
$grep -n 'o\{\2\}' a.txt
7.統計包含"the"的個數
$grep -c 'the' a.txt