grep命令(文本搜索過濾)

grep全稱是Global Regular Expression Print,表示全局正則表達式版本,它的使用權限是所有用戶。grep的工作方式是這樣的,它在一個或多個文件中搜索字符串模板。如果模板包括空格,則必須被引用,模板后的所有字符串被看作文件名。搜索的結果被送到標準輸出,不影響原文件內容。grep可用于shell腳本,因為grep通過返回一個狀態值來說明搜索的狀態,如果模板搜索成功,則返回0,如果搜索不成功,則返回1,如果搜索的文件不存在,則返回2。我們利用這些返回值就可進行一些自動化的文本處理工作。

命令格式:grep [option] pattern file

命令參數:

-a? --text? #不要忽略二進制的數據。

-A<顯示行數>? --after-context=<顯示行數>? #除了顯示符合范本樣式的那一列之外,并顯示該行之后的內容。

-b? --byte-offset? #在顯示符合樣式的那一行之前,標示出該行第一個字符的編號。?

-B<顯示行數>? --before-context=<顯示行數>? #除了顯示符合樣式的那一行之外,并顯示該行之前的內容。

?-c? ? --count? #計算符合樣式的列數。?

-C<顯示行數>? ? --context=<顯示行數>或-<顯示行數>? #除了顯示符合樣式的那一行之外,并顯示該行之前后的內容。

-d <動作>? ? ? --directories=<動作>? #當指定要查找的是目錄而非文件時,必須使用這項參數,否則grep指令將回報信息并停止動作。

-e<范本樣式>? --regexp=<范本樣式>? #指定字符串做為查找文件內容的樣式。?

-E? ? ? --extended-regexp? #將樣式為延伸的普通表示法來使用。

-f<規則文件>? --file=<規則文件>? #指定規則文件,其內容含有一個或多個規則樣式,讓grep查找符合規則條件的文件內容,格式為每行一個規則樣式。

-F? --fixed-regexp? #將樣式視為固定字符串的列表。 ?

-G? --basic-regexp? #將樣式視為普通的表示法來使用。

-h? --no-filename? #在顯示符合樣式的那一行之前,不標示該行所屬的文件名稱。

-H? --with-filename? #在顯示符合樣式的那一行之前,表示該行所屬的文件名稱。

-i? ? --ignore-case? #忽略字符大小寫的差別。

-l? ? --file-with-matches? #列出文件內容符合指定的樣式的文件名稱。

-L? --files-without-match? #列出文件內容不符合指定的樣式的文件名稱。?

-n? --line-number? #在顯示符合樣式的那一行之前,標示出該行的列數編號。??

?-q? --quiet或--silent? #不顯示任何信息。??

?-r? --recursive? #此參數的效果和指定“-d recurse”參數相同。??

?-s? --no-messages? #不顯示錯誤信息。??

?-v? --revert-match? #顯示不包含匹配文本的所有行。??

?-V? --version? #顯示版本信息。??

?-w? --word-regexp? #只顯示全字符合的列。??

?-x? ? --line-regexp? #只顯示全列符合的列。??

?-y? #此參數的效果和指定“-i”參數相同。

grep的規則表達式:

^? #錨定行的開始 如:'^grep'匹配所有以grep開頭的行。? ??

$? #錨定行的結束 如:'grep匹配所有以grep結尾的行。? ? .? ??

#匹配一個非換行符的字符 如:'gr.p'匹配gr后接一個任意字符,然后是p。? ??

*? ? #匹配零個或多個先前字符 如:'*grep'匹配所有一個或多個空格后緊跟grep的行。? ??

.*? #一起用代表任意字符。??

?[]? #匹配一個指定范圍內的字符,如'[Gg]rep'匹配Grep和grep。? ??

[^]? #匹配一個不在指定范圍內的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一個字母開頭,緊跟rep的行。? ?

?\(..\)? #標記匹配字符,如'\(love\)',love被標記為1。? ??

\<? ? ? #錨定單詞的開始,如:'\#錨定單詞的結束,如'grep\>'匹配包含以grep結尾的單詞的行。


x\{m\}? #重復字符x,m次,如:'0\{5\}'匹配包含5個o的行。

x\{m,\}? #重復字符x,至少m次,如:'o\{5,\}'匹配至少有5個o的行。

x\{m,n\}? #重復字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10個o的行。

\w? ? #匹配文字和數字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零個或多個文字或數字字符,然后是p。

\W? ? #\w的反置形式,匹配一個或多個非單詞字符,如點號句號等。

\b? ? #單詞鎖定符,如: '\bgrep\b'只匹配grep。

POSIX字符:

[:alnum:]? ? #文字數字字符

[:alpha:]? ? #文字字符

[:digit:]? ? #數字字符

[:graph:]? ? #非空字符(非空格、控制字符)

[:lower:]? ? #小寫字符

[:cntrl:]? ? #控制字符

[:print:]? ? #非空字符(包括空格)

[:punct:]? ? #標點符號

[:space:]? ? #所有空白字符(新行,空格,制表符)

[:upper:]? ? #大寫字符

[:xdigit:]? #十六進制數字(0-9,a-f,A-F)

使用實例:

實例1:查找指定進程

命令:ps -ef|grep svn

實例2:查找指定進程個數

命令:ps -ef|grep svn -c 或 ps -ef|grep -c svn

實例3:從文件中讀取關鍵詞進行搜索

命令:cat test.txt | grep -f test2.txt? //輸出test.txt文件中含有從test2.txt文件中讀取出的關鍵詞的內容行

實例4:從文件中讀取關鍵詞進行搜索 且顯示行號

命令:cat test.txt | grep -nf test2.txt //輸出test.txt文件中含有從test2.txt文件中讀取出的關鍵詞的內容行,并顯示每一行的行號

實例5:從文件中查找關鍵詞

命令:grep 'linux' test.txt

實例6:從多個文件中查找關鍵詞

命令:grep 'linux' test.txt test2.txt

//多文件時,輸出查詢到的信息內容行時,會把文件的命名在行最前面輸出并且加上":"作為標示符

實例7:grep不顯示本身進程

命令:ps aux|grep \[s]sh

ps aux | grep ssh | grep -v "grep"

實例8:找出以u開頭的行內容

命令:cat test.txt |grep ^u

實例9:輸出非u開頭的行內容

命令:cat test.txt |grep ^[^u]

實例10:輸出以hat結尾的行內容

命令:cat test.txt |grep hat$

實例11:輸出ip地址

命令:ifconfig eth0|grep -E "([0-9]{1,3}\.){3}[0-9]"

實例12:顯示包含ed或者at字符的內容行

命令:cat test.txt |grep -E "ed|at"

實例13:顯示當前目錄下面以.txt 結尾的文件中的所有包含每個字符串至少有7個連續小寫字符的字符串的行

命令:grep '[a-z]\{7\}' *.txt

實例14:日志文件過大,不好查看,我們要從中查看自己想要的內容,或者得到同一類數據,比如說沒有404日志信息的

命令:grep '.' access1.log|grep -Ev '404' > access2.log

grep '.' access1.log|grep -Ev '(404|/photo/|/css/)' > access2.log

grep '.' access1.log|grep -E '404' > access2.log

說明:上面3句命令前面兩句是在當前目錄下對access1.log文件進行查找,找到那些不包含404的行,把它們放到access2.log中,后面去掉’v’,即是把有404的行放入access2.log

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,908評論 6 541
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,324評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,018評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,675評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,417評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,783評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,779評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,960評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,522評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,267評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,471評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,009評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,698評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,099評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,386評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,204評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,436評論 2 378

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,823評論 18 139
  • linux grep命令 1.作用 Linux系統中grep命令是一種強大的文本搜索工具,它能使用正則表達式搜索文...
    山的那邊是什么_閱讀 1,839評論 0 3
  • 1.作用 Linux系統中grep命令是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹 配的行打印出來...
    流川楓丶閱讀 1,389評論 0 9
  • http://blog.sina.com.cn/s/blog_47d5f1b801015ea7.html首先要記住...
    水平閱讀 1,168評論 0 2
  • 我不能,用我笨拙的文字 還原你 我是...
    王無求閱讀 294評論 6 0