grep命令
通過搜索與PATTERN匹配的字段,在FILE文件中查找到匹配的字段並顯示出來。
格式:grep [options] PATTERN [FILE...]
options
-A num:文本後幾行
# grep -A 3 "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
-B #:模式之前的#行,也顯示出來
-C #:模式前後#行,都顯示出來
--colour=[顏色] 顯示匹配的字體顏色
# grep --colour=auto "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
-c,--count :顯示匹配行的總數
# grep -c "root" passwd
2
-E:作爲egrep匹配處理
-e:作爲包含以-爲開頭行,有效
-f:從文件中的每一行作爲匹配模式來獲取
-i:忽略匹配模式的大小寫
# grep -i "root" passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ROOT:x:0:0:Root:/Root:/bin/bash
-n:在輸出行前面標記上行號
# grep -n "root" passwd
1:root:x:0:0:root:/root:/bin/bash
12:operator:x:11:0:operator:/root:/sbin/nologin
-o:只顯示於模式匹配的部分
# grep -o "root" passwd
root
root
root
root
-v:不取與之匹配的模式。
在grep中,元字符 ?, +, {, |, (, 和 ) 喪失了它們的特殊意義;作爲替代,使用加反斜槓 \?, \+, \{, \|, \(, 和 \) 。
\?:0次或1次
\+:至少一次
\{\}:指定次數
\| :選擇
\(\):分組
例如: # grep "\(l..e\).*\1" like
.:任意單個字符
\<錨定詞首:
>\錨定詞尾:
\<PATTEN>\:錨定一個模式,如單詞,一個數
egrep命令:grep -E 與之類同
擴展正則表達式
元字符部分:
. :任意單個字符
? :最多匹配一次
*:零次或更多次
+:一次或更多次
{n}:精確匹配n次
{n,}:n次或更多次,至少n次
{n,m}:至少n次,但不多於m次
a|b,a或者b二選一
\<錨定詞首
>\錨定詞尾
()表示分組,().*\1前面的組再次出現後面
模式匹配的特殊寫法部分,以下寫法均代表一個字符,在grep和egrep中可以通用:
[:lower:]:小寫字母
[:upper:]:大寫 字母
[:digit:]:數字
[:alpha:]:大小寫字母
[:alnum:]:大小寫字母和數字
[:space:]:空格
[:punct:]:標點符號
fgrep命令:grep -F與之類同
快速正則表達式
grep把模式當做正則表達式看,fgrep把模式當做固定字符串看,所以後者要比前者速度快,當然同
時後者的搜索功能要弱於前者。