Linux shell grep指令

來源:互聯網
上載者:User

Linux shell grep指令 grep一般格式為:  www.2cto.com  grep [選項]基本Regex[檔案]這裡基本Regex可為字串。單引號雙引號在g r e p命令中輸入字串參數時,最好將其用雙引號括起來。在調用模式比對時,應使用單引號。例如:“m y s t r i n g”。這樣做有兩個原因,一是以防被誤解為s h e l l命令,二是可以用來尋找多個單片語成的字串。在調用變數時,也應該使用雙引號,諸如: g r e p“$ M Y VA R”檔案名稱,如果不這樣,將沒有返回結果。常用的g r e p選項有:  www.2cto.com  -c 只輸出匹配行的計數。-i 不區分大小寫(只適用於單字元)。-h 查詢多檔案時不顯示檔案名稱。-l 查詢多檔案時只輸出包含匹配字元的檔案名稱。-n 顯示匹配行及行號。-s 不顯示不存在或無匹配文本的錯誤資訊。-v 顯示不包含匹配文本的所有行。舉例:1、查詢多個檔案在所有檔案中查詢單詞“ sort it”$ grep "sort it" *2、 行匹配 1)顯示包含“4 8”字串的文本:$ grep  "48" data.f2)輸出匹配行的總數$ grep -c "48" data.f43)行數顯示滿足匹配模式的所有行行數:$ grep -n "48" data.f行數在輸出第一列,後跟包含4 8的每一匹配行。4)顯示非匹配行$ grep -v "48" data.f5)精確匹配可能大家已注意到,在上一例中,抽取字串“ 4 8”,返回結果包含諸如4 8 4和4 8 3等包含“4 8”的其他字串,實際上應精確抽取只包含4 8的各行。使用g r e p抽取精確匹配的一種更有效方式是在抽取字串後加\ >。假定現在精確抽取4 8,方法如下:$grep "48\>" data.f6)大小寫敏感預設情況下, g r e p是大小寫敏感的,如要查詢大小寫不敏感字串,必須使用- i開關。在d a t a . f檔案中有月份字元S e p t,既有大寫也有小寫,要取得此字串大小寫不敏感查詢,方法如下:$grep -i "48" data.f 1、模式範圍抽取代碼為4 8 4和4 8 3的城市位置,可以使用[ ]來指定字串範圍。$ grep "48[34]" data.f2、不匹配行首使行首不是4或8,可以在方括弧中使用^記號。$ grep "^[^48]" data.f如果是字串48$ grep -v "^[^48]" data.f3、設定大小寫使用- i開關可以屏蔽月份S e p t的大小寫敏感$ grep -i "sept" data.f也可以用另一種方式[ ]模式抽取各行包含S e p t和s e p t的所有資訊。$ grep '[sS]ept' data.f如果要抽取包含S e p t的所有月份,不管其大小寫,並且此行包含字串483,可以使用管道命令,即符號“|”左邊命令的輸出作為“ |”右邊命令的輸入。舉例如下:[sam@chenwy sam]$ grep '[sS]ept' data.f | grep 48483     Sept    5AP1996 USP     65.00   LVX2C   1894、匹配任一字元如果抽取以K開頭,以D結尾的所有代碼,可使用下述方法,因為已知代碼長度為5個字元:[sam@chenwy sam]$ grep 'K...D' data.f47      Oct     3ZL1998 LPSX    43.00   KVM9D   512483     may     5PA1998 USP     37.00   KVM9D   644將上述代碼做輕微改變,頭兩個是大寫字母,中間兩個任意,並以C結尾:[sam@chenwy sam]$ grep '[A-Z]..C' data.f5、日期查詢一個常用的查詢模式是日期查詢。先查詢所有以5開始以1 9 9 6或1 9 9 8結尾的所有記錄。使用模式5 . . 1 9 9 [ 6 , 8 ]。這意味著第一個字元為5,後跟兩個點,接著是1 9 9,剩餘兩個數字是6或8。[sam@chenwy sam]$ grep '5..199[6,8]' data.f6、範圍組合必須學會使用[ ]抽取資訊。假定要取得城市代碼,第一個字元為0-9,第二個字元在0到5之間,第三個字元在0到6之間,使用下列模式即可實現。[sam@chenwy sam]$ grep '[0-9][0-5[0-6]' data.f7、模式出現機率抽取包含數字4至少重複出現兩次的所有行,方法如下[sam@chenwy sam]$ grep '4\{2,\}' data.f8、使用grep匹配“與”或者“或”模式g r e p命令加- E參數,這一擴充允許使用擴充模式比對。例如,要抽取城市代碼為2 1 9或2 1 6,方法如下:[sam@chenwy sam]$ grep -E '219|216' data.f9、空行結合使用^和$可查詢空行。使用- c參數顯示總行數:[sam@chenwy sam]$ grep -c '^$' myfile使用- n參數顯示實際在哪一行:[sam@chenwy sam]$ grep -n '^$' myfile10、匹配特殊字元查詢有特殊含義的字元,諸如$ . ' " * [] ^ | \ + ? ,必須在特定字元前加\。假設要查詢包含“.”的所有行,指令碼如下:[sam@chenwy sam]$ grep '\.' myfile或者是一個雙引號:[sam@chenwy sam]$ grep '\"' myfile以同樣的方式,如要查詢檔案名稱c o n f t r o l l . c o n f(這是一個設定檔),指令碼如下:[sam@chenwy sam]$ grep 'conftroll\.conf' myfile11、查詢格式檔案名使用Regex可匹配任意檔案名稱。系統中對文字檔有其標準的命名格式。一般最多六個小寫字元,後跟句點,接著是兩個大寫字元。[sam@chenwy sam]$ grep '^[a-z]\{1,6\}\.[A-Z]\{1,2\}' filename2、使用萬用字元*的匹配模式grep "l.*s" testfile如在行尾查詢某一單詞,試如下模式:grep "ng$" testfile這將在所有檔案中查詢行尾包含單詞ng的所有行。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.