[TOC]
grep
前言
本文主要介紹了grep
和egrep
的基礎(chǔ)語法灯蝴,讀完本文可以基本掌握grep
和egrep
的使用
grep
定義
grep (global search regular expression(RE) and print out the line, 全面搜索正則表達(dá)式并把行打印出來) 是一種強(qiáng)大的文本搜索工具难述,它能使用正則表達(dá)式搜索文本伏社,并把匹配的行打印出來绍昂。
基礎(chǔ)常用用法
[root@www ~]# grep [-acinv] [--color=auto] [-A n] [-B n] '搜尋字符串' 文件名
選項(xiàng)與參數(shù):
-a :將 binary 文件以 text 文件的方式搜尋數(shù)據(jù)(基本沒用過)
-c :計(jì)算找到 '搜尋字符串' 的次數(shù)(用得少)
-i :忽略大小寫的不同屈溉,所以大小寫視為相同 (用得少)
-n :順便輸出行號(用得少)
-v :反向選擇宵统,亦即顯示出沒有 '搜尋字符串' 內(nèi)容的那一行A(用的很多)
-A:After的意思馋辈,顯示匹配字符串后n行的數(shù)據(jù)
-B:before的意思抚芦,顯示匹配字符串前n行的數(shù)據(jù)
-C是匹配行和它前后各n行。
將 /etc/passwd迈螟,出現(xiàn)root的行取出來
? ~ grep root /etc/passwd
root:*:0:0:System Administrator:/var/root:/bin/sh
daemon:*:1:1:System Services:/var/root:/usr/bin/false
_cvmsroot:*:212:212:CVMS Root:/var/empty:/usr/bin/false
將 / etc/passwd燕垃,有出現(xiàn) root 的行取出來, 同時顯示這些行在 / etc/passwd 的行號
? ~ grep -n root /etc/passwd
12:root:*:0:0:System Administrator:/var/root:/bin/sh
13:daemon:*:1:1:System Services:/var/root:/usr/bin/false
62:_cvmsroot:*:212:212:CVMS Root:/var/empty:/usr/bin/false
將 / etc/passwd,將沒有出現(xiàn) root 的行取出來
? ~ grep -v root /etc/passwd
##
# User Database
正則表達(dá)式
-w985
egrep
定義
egrep即擴(kuò)展grep井联。等同于grep -E 卜壕。 可用于擴(kuò)展正則表達(dá)式
擴(kuò)展正則表達(dá)式
?
: 匹配0個或1個在其之前的那個普通字符。
# 如烙常,匹配gd轴捎,god
grep –nE ‘go?d’ regular.txt
+
: 匹配1個或多個在其之前的那個普通字符鹤盒,重復(fù)前面字符1到多次。
例如:匹配god侦副,good侦锯,goood等等字符串。
grep –nE go+d’ regular.txt
()
: 表示一個字符集合. 或用在expr中秦驯,匹配整個括號內(nèi)的字符串尺碰,
例如:搜尋good或者glad
grep –nE ‘g(哦哦|la)’ regular.txt
|
: 表示“或”. 或(or)的方式匹配多個字串。
# 例如:匹配god或者good译隘。
grep –nE ‘god|good’ regular.txt