Linux編程中如何使用grep命令

來源:互聯網
上載者:User

grep (global search regular RE ) and print out the line,全面搜尋Regex並把行列印出來)是一種強大的文本搜尋工具,它能使用Regex搜尋文本,並把匹配的行列印出來.

參數:

1. -ANUM,--after-context=NUM 除了列出符合行之外,並且列出後NUM行。

如: $ grep –A1 panda file (從file中搜尋有panda樣式的行,並顯示該行的後1行)

2. -BNUM,--before-context=NUM 與-A NUM 相對,但這此參數是顯示除符合行之外並顯示在它之前的NUM行。如: (從file中搜尋有panda樣式的行,並顯示該行的前1行)

$ grep -B 1 panda file

3、 -C[NUM], -NUM, --context[=NUM] 列出符合行之外並列出上下各NUM行,預設值是2。

如: (列出file中除包含panda樣式的行外並列出其上下2行)(若要改變預設值,直接改變NUM即可)

$ grep -C[NUM] panda file

4、-c, --count 不顯示符合樣式行,只顯示符合的總行數。若再加上-v,--invert-match,參數顯示不符合的總行數

5、-i,--ignore-case 忽略大小寫差別

6、-n,--line-number 在匹配的行前面列印行號

7、-v,--revert-match 反檢索,只顯示不匹配的行

8、精確匹配:

例如在抽取字串“ 48”,返回結果包含諸如484和483等包含“48”的其他字串,實際上應精確抽取只包含48的各行。

使用grep抽取精確匹配的一種有效方式是在抽取字串後加\>。假定現在精確抽取48,

方法如下:

#grep '48\>' filename

9、-s 不顯示不存在或無匹配文本的錯誤資訊

如:執行命令grep "root" /etc/password,因為password檔案不存在,所以在螢幕上輸出錯誤資訊,若使用grep命令-s開關,可屏蔽錯誤資訊

要用好grep這個工具,其實就是要寫好Regex,所以這裡不對grep的所有功能進行執行個體講解,只列幾個例子,講解一個Regex的寫法。

$ ls -l | grep '^d'

通過管道過濾ls -l輸出的內容,只顯示以d開頭的行。

$ grep 'test' d*

顯示所有以d開頭的檔案中包含test的行。

$ grep 'test' aa bb cc

顯示在aa,bb,cc檔案中匹配test的行。

$ grep '[a-z]\{5,\}' aa

顯示所有包含每個字串至少有5個連續小寫字元的字串的行。

$grep ‘t[a|e]st’ filename

顯示包含test或tast的所有行。

$grep '\.$' filename

顯示以.為結尾的所有行。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.