linux 命令列查詢 grep 用法資訊
grep --help
Usage: grep [OPTION]... PATTERNS [FILE]...
Search for PATTERNS in each FILE.
Example: grep -i 'hello world' menu.h main.c
PATTERNS can contain multiple patterns separated by newlines.
Pattern selection and interpretation:
-E, --extended-regexp PATTERNS are extended regular expressions
-F, --fixed-strings PATTERNS are strings
-G, --basic-regexp PATTERNS are basic regular expressions
-P, --perl-regexp PATTERNS are Perl regular expressions
-e, --regexp=PATTERNS use PATTERNS for matching
-f, --file=FILE take PATTERNS from FILE
-i, --ignore-case ignore case distinctions in patterns and data
--no-ignore-case do not ignore case distinctions (default)
-w, --word-regexp match only whole words
-x, --line-regexp match only whole lines
-z, --null-data a data line ends in 0 byte, not newline
Miscellaneous:
-s, --no-messages suppress error messages
-v, --invert-match select non-matching lines
-V, --version display version information and exit
--help display this help text and exit
Output control:
-m, --max-count=NUM stop after NUM selected lines
-b, --byte-offset print the byte offset with output lines
-n, --line-number print line number with output lines
--line-buffered flush output on every line
-H, --with-filename print file name with output lines
-h, --no-filename suppress the file name prefix on output
--label=LABEL use LABEL as the standard input file name prefix
-o, --only-matching show only nonempty parts of lines that match
-q, --quiet, --silent suppress all normal output
--binary-files=TYPE assume that binary files are TYPE;
TYPE is 'binary', 'text', or 'without-match'
-a, --text equivalent to --binary-files=text
-I equivalent to --binary-files=without-match
-d, --directories=ACTION how to handle directories;
ACTION is 'read', 'recurse', or 'skip'
-D, --devices=ACTION how to handle devices, FIFOs and sockets;
ACTION is 'read' or 'skip'
-r, --recursive like --directories=recurse
-R, --dereference-recursive likewise, but follow all symlinks
--include=GLOB search only files that match GLOB (a file pattern)
--exclude=GLOB skip files that match GLOB
--exclude-from=FILE skip files that match any file pattern from FILE
--exclude-dir=GLOB skip directories that match GLOB
-L, --files-without-match print only names of FILEs with no selected lines
-l, --files-with-matches print only names of FILEs with selected lines
-c, --count print only a count of selected lines per FILE
-T, --initial-tab make tabs line up (if needed)
-Z, --null print 0 byte after FILE name
Context control:
-B, --before-context=NUM print NUM lines of leading context
-A, --after-context=NUM print NUM lines of trailing context
-C, --context=NUM print NUM lines of output context
-NUM same as --context=NUM
--color[=WHEN],
--colour[=WHEN] use markers to highlight the matching strings;
WHEN is 'always', 'never', or 'auto'
-U, --binary do not strip CR characters at EOL (MSDOS/Windows)
這些選項定義了 grep
使用哪種模式來匹配文字:
-
-E, --extended-regexp
:啟用擴充套件正規表示式(ERE),支援更多複雜的正則語法,例如+
,?
,{}
等。示例:
匹配
file
或files
。 -
-F, --fixed-strings
:將模式視為普通字串,而非正規表示式。這種方式忽略特殊字元的含義。示例:
直接匹配包含
[+] error
字串的行,不將[]
視為正規表示式的字符集。 -
-G, --basic-regexp
:使用基本正規表示式(BRE),這是預設的行為。示例:
匹配
file
後面跟一個數字的行。 -
-P, --perl-regexp
:使用 Perl 風格的正規表示式語法,這允許更加複雜的正規表示式模式。示例:
匹配包含一個或多個數字的行,
-P
允許使用\d
(數字)這樣的 Perl 正規表示式語法。 -
-e, --regexp=PATTERNS
:指定用於匹配的模式(可以使用多次來指定多個模式)。示例:
匹配包含
error
或warning
的行。 -
-f, --file=FILE
:從檔案中讀取模式,每一行作為一個模式。示例:
patterns.txt
檔案中的每一行都是一個模式,grep
會逐一進行匹配。 -
-i, --ignore-case
:忽略大小寫的區別。示例:
匹配
error
,Error
,ERROR
等形式。 -
-w, --word-regexp
:只匹配完整的單詞,而不是部分匹配。示例:
只匹配
is
作為獨立單詞的行,而不匹配this
或his
。 -
-x, --line-regexp
:只匹配整個行。示例:
只匹配完全是
hello
的行,而不會匹配包含hello
的其他行。
輸出控制
這些選項控制 grep
的輸出行為:
-
-n, --line-number
:列印匹配行的行號。示例:
輸出包含
error
的行及其行號。 -
-c, --count
:只列印匹配的行數。示例:
輸出檔案中包含
error
的行數。 -
-o, --only-matching
:只顯示匹配的部分,而不是整行。示例:
只顯示
error
出現的次數和位置。 -
-H, --with-filename
:在輸出行前顯示檔名(用於多個檔案時)。示例:
匹配多個檔案,輸出格式為
檔名:內容
。 -
-h, --no-filename
:當搜尋多個檔案時,抑制檔名輸出。示例:
只顯示匹配的行,不顯示檔名。
-
-l, --files-with-matches
:只輸出包含匹配行的檔名。示例:
只輸出包含
error
的檔名。
上下文控制
這些選項允許顯示匹配行前後的一些額外內容,幫助理解上下文:
-
-A NUM, --after-context=NUM
:在匹配行後顯示NUM
行。示例:
輸出匹配
error
的行及其後 3 行。 -
-B NUM, --before-context=NUM
:在匹配行前顯示NUM
行。示例:
輸出匹配
error
的行及其前 3 行。 -
-C NUM, --context=NUM
:在匹配行前後各顯示NUM
行。示例:
輸出匹配
error
的行及其前後 2 行。
其他常用選項
-
-v, --invert-match
:顯示不匹配模式的行(反轉匹配)。示例:
輸出檔案中不包含
error
的行。 -
-r, --recursive
:遞迴搜尋目錄中的檔案。示例:
遞迴搜尋指定目錄中的所有檔案。
-
--color
:高亮顯示匹配到的字串。示例:
在輸出中高亮顯示匹配的部分。
例子總結
-
忽略大小寫匹配 "error",並顯示匹配的行號:
-
遞迴搜尋包含 "error" 的所有檔案,並只顯示檔名:
-
只顯示匹配到的部分,並高亮顯示 "success":
-
搜尋包含 "failed" 的行,並顯示前後 2 行:
-
顯示不包含 "warning" 的行: