grep (global search regular expression(re) and print out the line,全面搜尋正規表示式並把行列印出來)是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹配的行列印出來。
unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的擴充套件,支援更多的re元字元, fgrep就是fixed grep或fast grep,它們把所有的字母都看作單詞,也就是說,正規表示式中的元字元表示回其自身的字面意義,不再特殊。linux使用gnu版本的grep。它功能更強,可以通過-g、-e、-f命令列選項來使用egrep和fgrep的
過濾文字grep
grep是一種強大的文字搜尋工具命令,用於查詢檔案中的符合指定格式的字串,支援正規表示式。如不指定任何檔名稱,或是所給予的檔名為「—」,則grep命令從標準輸入裝置讀取資料。grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的擴充套件。fgrep就是fixed grep或fast grep,該命令使用任何正規表示式中的元字元表示其自身的字面意義,不再特殊。其中egrep就等同於「grep —e」,fgrep等同於「grep -f」。linux中的grep功能強大,支援很多豐富的引數,可以方便地進行一些文字處理工作。
grep單獨使用時至少有兩個引數,如少於兩個引數,grep會一直等待,直到該程式被中斷。如果遇到了這樣的情況,可以按「ctrl+c」終止。預設情況下只搜尋當前目錄,如果遞迴查詢子目錄,可使用「r」選項。
grep 命令:
-v 排除匹配的內容
[root@p1qmsmdw01 data]# ll -ths|grep -v q15total 91m
8.0k -rw------- 1 gpadmin gpadmin 6.4k jan 7 16:47 queries_now.dat
4.0k -rw------- 1 gpadmin gpadmin 28 jan 7 16:47 database_now.dat
4.0k -rw------- 1 gpadmin gpadmin 308 jan 7 16:47 database_tail.dat
0 -rw------- 1 gpadmin gpadmin 0 jan 7 16:47 iterators_now.dat
................
-e 支援擴充套件的正規表示式
[root@p1pl1rtm02 qms]# ip a|grep -e "([0-9]\.)[0-9]"多個變數grepinet 127.0.0.1/8 scope host lo
inet 10.50.10.152/24 brd 10.50.10.255 scope global bond0
]# cat /proc/meminfo | grep -e -w 'memtotal|memfree|buffers|cached'
memtotal: 296863632 kb
memfree: 227503388 kb
buffers: 4400 kb
cached: 47362912 kb
-i 忽視大小寫
-o 只顯示匹配的內容
$ : 行結尾標誌。例如:ben$ 表示匹配以ben結束的行。
[^] :匹配除[^字元]之外的任何乙個字元。 例如9[^0], 不會匹配90,但是會匹配91,92等。
--color=auto 顯示匹配顏色
-n 顯示行號
-e, --extended-regexp 擴充套件正規表示式egrep
-f, --fixed-strings 乙個換行符分隔的字串的集合fgrep
-g, --basic-regexp 基本正則
-p, --perl-regexp 呼叫的perl正則
-e, --regexp=pattern 後面根正則模式,預設無
-f, --file=file 從檔案中獲得匹配模式
-i, --ignore-case 不區分大小寫
-w, --word-regexp 匹配整個單詞
-x, --line-regexp 匹配整行
-z, --null-data 乙個 0 位元組的資料行,但不是空行
雜項: -s, --no-messages 不顯示錯誤資訊
-v, --invert-match 顯示不匹配的行
-v, --version 顯示版本號
--help 顯示幫助資訊
輸入控制:
-m, --max-count=num 匹配的最大數
-b, --byte-offset 列印匹配行前面列印該行所在的塊號碼。
-n, --line-number 顯示的加上匹配所在的行號
--line-buffered 重新整理輸出每一行
-h, --with-filename 當搜尋多個檔案時,顯示匹配檔名字首
-h, --no-filename 當搜尋多個檔案時,不顯示匹配檔名字首
--label=label print label as filename for standard input
-o, --only-matching 只顯示一行中匹配pattern 的部分
-q, --quiet, --silent 不顯示任何東西
--binary-files=type 假定二進位制檔案的type 型別;
type 可以是`binary', `text', 或`without-match'
-a, --text 匹配二進位制的東西
-i 不匹配二進位制的東西
-d, --directories=action 目錄操作,讀取,遞迴,跳過
-d, --devices=action 設定對裝置,fifo,管道的操作,讀取,跳過
-r, -r, --recursive 遞迴呼叫
--include=pattern 只查詢匹配file_pattern 的檔案
--exclude=pattern 跳過匹配file_pattern 的檔案和目錄
--exclude-from=file 跳過所有除file 以外的檔案
-l, --files-without-match 匹配多個檔案時,顯示不匹配的檔名
-l, --files-with-matches 匹配多個檔案時,顯示匹配的檔名
-c, --count 顯示匹配的行數
-z, --null 在file 檔案最後列印空字元
檔案控制:
-b, --before-context=num 列印匹配本身以及前面的幾個行由num控制
-a, --after-context=num 列印匹配本身以及隨後的幾個行由num控制
-c, --context=num 列印匹配本身以及隨後,前面的幾個行由num控制
-num 根-c的用法一樣的
--color[=when],
--colour[=when] 使用標誌高亮匹配字串;
-u, --binary 使用標誌高亮匹配字串;
-u, --unix-byte-offsets 當cr 字元不存在,報告位元組偏移(msdos 模式)
元字元
功能列子描述^
行首'^love'
匹配所有以love開始的行$行尾
'love$'
匹配所有以love結尾的行
.(點)
匹配任意乙個字元
'l..e'
匹配所有包含l,緊跟任意2個字元,再跟乙個e的行
*匹配0個或多個字元
' *love'
匹配所有包含0個或多個空格,再跟love的行
匹配乙個在集合裡的字元
'[ll]ove'
匹配包含love或love的行
[^]匹配乙個不在集合裡的字元
'[^a-k]ove'
匹配不包含從a-k的字元,緊跟ove的行
/<
詞首'/匹配所有有任一單詞以love為首的行
/>
詞尾'love/>'
匹配所有有任一單詞以love為尾的行
/(../)
標識匹配的乙個或多個字元
'/(love/)ing'
標識乙個標註以期後面引用,第乙個用/1,一次類推,最多有9個;見列子
x/x/
x/重複字元x:m次
至少m次
在m次到n次之間
'0/'
'0/'
'0/如果乙個行有:連續5個0,至少連續5個0,連續的0在5到10之間,則滿足要求。
Linux常用命令grep
所有的類linux系統都會提供乙個名為grep global regular expression print,全域性正規表示式輸出 的搜尋工具。grep命令在對乙個或多個檔案的內容進行基於模式的搜尋的情況下是非常有用的。模式可以是單個字元 多個字元 單個單詞 或者是乙個句子。當命令匹配到執行命令時...
Linux常用命令 grep命令
linux grep 命令用於查詢檔案裡符合條件的字串 grep 指令用於查詢內容包含指定的範本樣式的檔案,如果發現某檔案的內容符合所指定的範本樣式,預設 grep 指令會把含有範本樣式的那一列顯示出來。若不指定任何檔名稱,或是所給予的檔名為 則 grep 指令會從標準輸入裝置讀取資料。grep r...
Linux常用命令 grep命令
root grep action color auto 搜尋字串 filename 選項與引數 a 講binary 檔案以 text 檔案的方式搜尋資料 c 計算找到 搜尋字串 的次數 i 忽略大小寫的不同,所以大小寫視為相同 n 順便輸出行號 v 反向選擇,亦即顯示出沒有 搜尋字串 內容的那一行 ...