grep (global search regular RE ) and print out the line,全面搜索正則表達式並把行打印出來)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來.
參數:
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 不顯示不存在或無匹配文本的錯誤信息
URL:http://www.bianceng.cn/OS/Linux/201410/45915.htm
如:執行命令grep "root" /etc/password,因為password文件不存在,所以在屏幕上輸出錯誤信息,若使用grep命令-s開關,可屏蔽錯誤信息
要用好grep這個工具,其實就是要寫好正則表達式,所以這裡不對grep的所有功能進行實例講解,只列幾個例子,講解一個正則表達式的寫法。
$ 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
顯示以.為結尾的所有行。