Provided by: manpages-zh_1.5.1-2_all bug

NAME

       grep, egrep, fgrep - 列印匹配給定模式的行

` SYNOPSIS
       grep [options] PATTERN [FILE...]
       grep [options] [-e PATTERN | -f FILE] [FILE...]

yz DESCRIPTION
       Grep               搜索以              FILE              命名的檔案輸入
       (或者是標準輸入,如果沒有指定檔名,或者給出的檔名是                   -
       的話),尋找含有與給定的模式   PATTERN  相匹配的內容的行。  預設情況下,
       grep 將把含有匹配內容的行列印出來。

       另外,也可以使用兩蚥傴媯{式 egrepfgrepEgrepgrep -E  相同。
       Fgrepgrep -F 相同。

 OPTIONS
       -A NUM, --after-context=NUM
              列印出緊隨匹配的行之後的下文                                 NUM
              行。在相鄰的匹配組之間將會列印內容是 -- 的一行。

       -a, --text
              將一茪G進制檔案視為一荅瞻憒r檔來處理;它與   --binary-files=text
              選項等價。

       -B NUM, --before-context=NUM
              列印出匹配的行之前的上文                                     NUM
              行。在相鄰的匹配組之間將會列印內容是 -- 的一行。

       -C NUM, --context=NUM
              列印出匹配的行的上下文前後各                                 NUM
              行。在相鄰的匹配組之間將會列印內容是 -- 的一行。

       -b, --byte-offset
              在輸出的每行前惘P時列印出當前行在輸入檔案中的字節偏移量。

       --binary-files=TYPE
              如果一蚗仵蛌滌_始幾茼r節表明檔案包含二進制數據,那麼假定檔案是
              TYPE   類型的。預設情況下,   TYPEbinary   ,並且   grep
              一般會輸出一茪@行的消息說一-
              茪G進制檔案匹配,或者如果沒有匹配的話就沒有消息輸出。如果類型
              TYPEwithout-match         ,那麼        grep
              假定二進制檔案不會匹配;這樣做與 -I 選項等價。如果類型  TYPEtext   ,那麼  grep  將一茪G進制檔案視為純文字檔來處理;它與  -a
              選項等價。        iG        grep         --binary-files=text
              可能會輸出二進制的無用內容。如果輸出設備是一-
              茞袟搳A並且終端的驅動將這些輸出中的一些當作命令,可能會帶來惡劣的副作用。

       --colour[=WHEN], --color[=WHEN]
              在匹配的行周圍以   GREP_COLOR   環境變量中指定的記號來標記。WHEN
              可以是 `never', `always', 或是 `auto'。

       -c, --count
              禁止通常的輸出;作為替代,為每一蚇擗J檔案列印一-
              茪t的行的總數。如果使用   -v,   --invert-match  選項  (參見下-
              ),將是不匹配的行的總數。

       -D ACTION, --devices=ACTION
              如果輸入檔案是一茬]備,FIFO   或是套接字   (socket)   ,使用動作
              ACTION     來處理它。預設情況下,動作     ACTIONread
              ,意味著設備將視為普通檔案那樣來讀。如果動作  ACTIONskip
              ,將不處理而直接跳過設備。

       -d ACTION, --directories=ACTION
              如果輸入檔案是一茈媬,使用動作                           ACTION
              來處理它。預設情況下,動作        ACTIONread
              ,意味著目錄將視為普通檔案那樣來讀。如果動作   ACTIONskip
              ,將不處理而直接跳過目錄。如果動作 ACTIONrecursegrep
              將遞歸地讀每一目錄下的所有檔案。這樣做和 -r 選項等價。

       -E, --extended-regexp
              將模式 PATTERN 作為一蚋X展的正則表達式來解釋 (參見下)。

       -e PATTERN, --regexp=PATTERN
              使用模式 PATTERN 作為模式;在保護以 - 為起始的模式時有用。

       -F, --fixed-strings
              將模式   PATTERN   視為一茤T定的字符串的列表,用新行  (newlines)
              分隔,只n匹配其中之一即可。

       -P, --perl-regexp
              將模式 PATTERN 作為一 Perl 正則表達式來解釋。

       -f FILE, --file=FILE
              從檔案          FILE           中獲取模式,每行一荂C空檔案含有0-
              蚍狾﹛A因此不匹配任何東西。

       -G, --basic-regexp
              將模式       PATTERN      作為一荌禰貌漸翰h表達式      (參見下)
              來解釋。這是預設C

       -H, --with-filename
              為每茪t列印檔名。

       -h, --no-filename
              當搜索多蚗仵蛃氶A禁止在輸出的前悼[上檔名前綴。

       --help 輸出一蚋眶u的幫助信息。

       -I     處理一茪G進制檔案,但是認為它不包含匹配的內容。這和    --binary-
              files=without-match 選項等價。

       -i, --ignore-case
              忽略模式 PATTERN 和輸入檔案中的大小寫的分別。

       -L, --files-without-match
              禁止通常的輸出;作為替代,列印出每-
              茼b通常情況下不會產生輸出的輸入檔案的名字。對每-
              蚗仵蛌滷蓬y在遇到第一茪t的時埭N會停止。

       -l, --files-with-matches
              禁止通常的輸出;作為替代,列印出每-
              茼b通常情況下會產生輸出的輸入檔案的名字。對每-
              蚗仵蛌滷蓬y在遇到第一茪t的時埭N會停止。

       -m NUM, --max-count=NUM
              在找到    NUM    茪t的行之後,不再讀這蚗仵蛂C如果輸入是來自一-
              荋雲q檔案的標準輸入,並且已經輸出了   NUM    茪t的行,    grep
              保証標準輸入被定位於退出時的最後一次匹配的行之後,不管是否指定了-
              n輸出緊隨的下文的行。這樣可以使一蚑掍庰{式恢復搜索。當  grepNUM  茪t的行之後停止,它會輸出任何緊隨的下文的行。當使用了  -c--count 選項的時唌A grep 不會輸出比 NUM 更多的行。當指定了 -v--invert-match     選項的時唌A    grep    會在輸出    NUM
              茪ㄓt的行之後停止。

       --mmap 如果可能的話,使用   mmap(2)    系統調用來讀取輸入,而不是預設的
              read(2)              系統調用。在一些情況下,             --mmap
              提供較好的性能。但是,如果一蚇擗J檔案在                     grep
              正在操作時大小發生變化,或者如果發生了一   I/O   錯誤,  --mmap
              可能導P不可知的行為 (包括core dumps)。

       -n, --line-number
              在輸出的每行前悼[上它所在的檔案中它的行號。

       -o, --only-matching
              只顯示匹配的行中與 PATTERN 相匹配的部分。

       --label=LABEL
              將實際上來自標準輸入的輸入視為來自輸入檔案 LABEL 。這對於  zgrep
              這樣的工具非常有用,例如:  gzip  -cd  foo.gz  |grep --label=foo
              something

       --line-buffering
              使用行緩沖,it can be a performance penality.

       -q, --quiet, --silent
              安靜。不向標準輸出寫任何東西。如果找到任何匹配的內容就立即以狀態-
               0 退出,即使檢測到了錯誤。 參見 -s--no-messages 選項。

       -R, -r, --recursive
              遞歸地讀每一目錄下的所有檔案。這樣做和 -d recurse 選項等價。

         --include=PATTERN
              僅僅在搜索匹配 PATTERN 的檔案時在目錄中遞歸搜索。

         --exclude=PATTERN
              在目錄中遞歸搜索,但是跳過匹配 PATTERN 的檔案。

       -s, --no-messages
              禁止輸出關於檔案不存在或不可讀的錯誤訊息。       對於可移植性需-
              n注意:與   GNU   grep   不同,傳統的   grep   不遵守    POSIX.2
              規範,因為傳統的 grep 缺少一 -q 選項,而它的 -s 選項與 GNU grep-q    選項行為相似。需n可移植到傳統    grep    的    shell
              稿本應當避免使用 -q-s 選項,而應當將輸出咿w向到 /dev/null 。

       -U, --binary
              將檔案視為二進制。預設情況下,在 MS-DOS 和  MS-Windows  系統中,
              grep  通過從檔案中讀取頭部的  32kB  內容來判斷它的檔案類型。如果
              grep  判斷檔案是一荅瞻憒r檔,它將鴝l檔案內容中的   CR   字符去除
              (使得含有    ^$   的正則表達式可以正常工作)。指定   -U
              將不進行這些工作,而使所有檔案保持不變地讀取並傳遞給匹配機制。如果檔案是一-
              茈H   CR/LF   換行的純文字檔,這樣作將導P一些正則表達式失敗。這-
              蚇龠策b MS-DOS 和 MS-Windows 之外的系統中無效。

       -u, --unix-byte-offsets
              報告        Unix        榆瑼漲r節偏移量。這荈}關使得        grep
              報告字節偏移量時,將檔案作為  Unix 榆瑼滲瞻憒r檔看待,也就是說將
              CR    字符去掉。這將產生與在一台    Unix     主機上運行     grep
              完全相同的結果。除非同時使用 -b 選項,否則這蚇龠紫L效。這蚇龠策b
              MS-DOS 和 MS-Windows 之外的系統中無效。

       -V, --version
              向標準錯誤輸出列印  grep  的版本號。版本號應當包含在所有的   bug
              報告中 (參見下)。

       -v, --invert-match
              改變匹配的意義,只選擇不匹配的行。

       -w, --word-regexp
              只選擇含有能組成完整的詞的匹配的行。判斷方法是匹配的子字符串必須是一行的開始,或者是在一-
              茪ㄔi能是詞的組成的字符之後。與此相似,它必須是一行的結束,或者是在一-
              茪ㄔi能是詞的組成的字符之前。詞的組成字符是字母,數字,還有下劃線。

       -x, --line-regexp
              只選擇能匹配完整一行的匹配。

       -y     -i 的同義詞,廢棄不用。

       -Z, --null
              輸出一茈零字節       (ASCII       碼中的       NUL        字符)
              而不是一般情況下輸出在檔名之後的字符。例如,   grep   -lZ  在每-
              蚗犰W之後輸出一茈零字節而不是普通的新行符。這-
              蚇龠筐炱o輸出清楚明白,即使檔名的表示中包含特殊字符比如新行符。這-
              蚇龠等i以與命令 find -print0, perl -0,  sort  -z,  和  xargs  -0
              一起使用,來處理任意的檔名,即使是那些含有新行符的檔名。

hF REGULAR EXPRESSIONS
       一茈翰h表達式是一荋yz了一-
       茼r符串集合的模式。正則表達式的構造類似於算術表達式,使用各種各樣的操作符來將更小的表達式連在一起。

       Grep   能理解兩種不同版本的正則表達式語法:"basic"   和  "extended"。在
       GNU grep      中,兩種語法可以實現的弁酮O沒有區別的。在其他實現中,基本
       (basic)    正則表達式表達能力n弱一點。下悸煽yz適用於擴展的   (extended)
       正則表達式,它與基本正則表達式的區別會在最後做一蚆`結。

       基本的構造塊是匹配單-
       茼r符的正則表達式。大部分字符,包括所有字母和數字,是匹配它怞菬-
       的正則表達式。任何具有特殊含義的元字符可以通過前置一茪炱袟b來引用。(may
       be quoted by preceding it with a backslash.)

       AF      (bracket)      是一茼r符序列,放在     []
       當中。它匹配序列中的任何一茼r符;如果序列中的第一茼r符是脫字符  (caret)
       ^  那麼它匹配  b  序列中的任何一茼r符。例如,正則表達式 [0123456789]
       匹配任何一蚍r。

       在方括號表達式之中,一  SF   (range)   由兩茼r符組成,中間用一-
       茬s字符          (hyphen)          分隔。它匹配在這兩茼r符之間的任何一-
       茼r符,使用本地化的序列順序和字符集。(that  sorts   between   the   two
       characters,inclusive,   using   the  locale's  collating  sequence  and
       character  set.)  例如,在預設的   C   locale中,   [a-d][abcd]
       等價。典型的,釵h locale 將字符以字典順序排序,在這些 locale 中, [a-d]
       不與      [abcd]       等價;例如它可能與       [aBbCcDd]       等價。-
       n獲得傳統的對方括號表達式的解釋,可以設定環境變量  LC_ALLC 來使用
       locale C 。

       最後,在方括號表達式中有一些預定義的字符類,如下所示。它-
       怐漲W字是自說明的,它怓O     [:alnum:](字母和數字),    [:alpha:](字母),
       [:cntrl:](),   [:digit:](數字),    [:graph:](),    [:lower:](小寫字母),
       [:print:](可列印字符),           [:punct:](),          [:space:](空格),
       [:upper:](大寫字母),  和   [:xdigit:]   。例如,   [[:alnum:]]   意思是
       [0-9A-Za-z]     ,但是後一種表示方法依賴於     locale     C     和ASCII
       字符編碼,而前一種是與                                           locale
       和字符集無關的。(注意這些字符類名中的方括號也是符號名稱的一部分,必須包含在用來為序列定界的方括號之中。)

       大多數元字符處於序列中時會失去它怐滲S殊意義。為了包含一茼r捧N義
       (literal)  的  ]  ,需n將它放在序列的最前。與此相似,為了包含一茼r捧N義
       (literal)                  的                  ^                  ,需-
       n將它放在除了序列最前之外的其他位置。最後,為了包含一茼r捧N義 (literal)
       的 - ,需n將它放在序列最後。

       句點符 (period) .  匹配任何一茼r符。符號 \w[[:alnum:]]  的同義詞,
       \W[^[:alnum]] 的同義詞。

       脫字符    (caret)    ^    和美元標記   (dollar)   $   分別是匹配一行的-
       熙〝M尾部的空字串的元字符。符號    \<\>    分別是匹配一茧的-
       熙〝M尾部的空字串的元字符。符號  \b 匹配一茧邊緣 (edge) 的空字串,符號
       \B 匹配  處於一茧的邊緣的空字串。

       一茈翰h表達式後悼i以跟隨多種契_操作符之一。
       ?      先前的項是可選的,最多匹配一次。
       *      先前的項可以匹配零次或多次。
       +      先前的項可以匹配一次或多次。
       {n}    先前的項將匹配恰好 n 次。
       {n,}   先前的項可以匹配 n 或更多次。
       {n,m}  先前的項將匹配至少 n 詞,但是不會超過 m 次。

       兩茈翰h表達式可以連接到一起;得出的正則表達式可以匹配任何由兩-
       茪嬪O匹配連接前的子表達式的子字符串連接而成的字符串。

       兩茈翰h表達式可以用中綴操作符                                         |
       聯合到一起,得出的正則表達式可以匹配任何匹配聯合前的任何一-
       茪l表達式的字符串。

       契_操作符的優先級比連接高,接下來又比選擇的優先級高。一-
       荍嗾膋漱l表達式可以用圓括號 (parentheses) 括住來超越這些優先級規則。(to
       override these precedence rules.)

       反向引用     \n     中,    n    是一蚍r,匹配正則表達式中,以第    n
       荈磟A號括住的子表達式已匹配的子字符串。

       在基本正則表達式中,元字符  ?,   +,   {,   |,   (,   和   )   喪失了它-
       怐滲S殊意義;作為替代,使用加反斜槓的  (backslash) 版本 \?, \+, \{, \|,
       \(, 和 \) 。

       傳統的  egrep  不支持元字符  {  ,並且一些  egrep   的實現通過支持   \{
       來代替它,因此可移植的稿本應當避免 在 egrep 中使用 { 模式,應當使用 [{]
       來匹配一茼r捧N義 (literal) 的 { 。

       GNU  egrep  通過假設如果  {  處於  an  invalid  interval  specification
       的起始,就不是一荅S殊字符,來支持傳統的用法。例如,shell   命令   egrep
       '{1'                    將會搜索這茖潀r符的字符串                    {1
       而不是報告在正則表達式中發生了語法錯誤。POSIX.2 允陶o茼甈陛A將其視為一-
       蚋X展,但是可移植的稿本應當避免使用它。

q ENVIRONMENT VARIABLES
       Grep 的行為受下列環境變量影響。

       一 locale LC_foo 是通過按下悸熄陽A LC_ALL, LC_foo,  LANG,  檢查這三-
       蚗藿疻僆q的取蚑T定的。設置了的第一蚥僆q指定了      locale。例如,如果
       LC_ALL 沒有設置,但是  LC_MESSAGES  設置為  pt_BR  ,那麼巴西的葡萄牙語
       (Brazilian     Portuguese)     將用作     LC_MESSAGES     locale    的-
       C如果沒有設置這其中任何一蚗藿疻僆q,或者沒有安裝所設置的       locale
       目錄,或者如果  grep  沒有將國家和語言支持  (national  language support
       (NLS)) 編譯在內,將預設使用 locale C。

       GREP_OPTIONS
              這蚥僆q指定了將放在所有顯式指定的選項之前的預設選項。例如,如果
              GREP_OPTIONS'--binary-files=without-match
              --directories=skip'                 的話,                  grep
              將像已經在任何顯式指定的選項之前指定了   --binary-files=without-
              match--directories=skip     選項那樣來運作。選項以空白
              (whitespace)   分隔。一茪炱袟b   (backslash)   使得下一茼r符轉義
              (escape),因此可以用來指定一荍t有空白或者反斜槓的選項。

       GREP_COLOR
              指定用來高亮顯示的標記。

       LC_ALL, LC_COLLATE, LANG
              這些變量指定了  locale  LC_COLLATE  ,決定了解釋類似  [a-z]  的-
              S圍表達式時的序列順序 (collating sequence) 。

       LC_ALL, LC_CTYPE, LANG
              這些選項指定了   locale   LC_CTYPE   ,決定了字符的類型,例如,-
              些字符是空白 (whitespace) 。

       LC_ALL, LC_MESSAGES, LANG
              這些選項指定了     locale     LC_MESSAGES     ,決定了      grep
              的消息使用的語言。預設的 locale C 使用美國^語的消息。

       POSIXLY_CORRECT
              如果設置了的話,  grep 將像 POSIX.2 n求的那樣來運作;否則, grep
              將像其他               GNU               程式一樣來運作。POSIX.2
              n求檔名之後的選項必須視為檔名;預設情況下,這些選項被交換到操作數列表的前-
              情A被當作選項來處理。同時,                              POSIX.2
              n求不可識別的選項在診斷消息中表示為       "illegal",但是既然它-
              怢S有真正觸犯法律,因此預設情況下它怞b診斷            (diagnose)
              消息中表示為   "invalid"。   POSIXLY_CORRECT  同時禁止了下探yz的
              _N_GNU_nonoption_argv_flags__N_GNU_nonoption_argv_flags_
              (這裏 Ngrep's 數字形式的進程ID。)  如果這蚗藿疻僆q的熔  i
              茼r符是    1    ,那麼不將    grep    的第    i   蚞犑@數視為一-
              蚇龠窗A即使它看上去像。shell      可以將這蚥僆q設置在它運行的每-
              茤R令的環境中,指定-
              蚞犑@數是檔名通配符擴展的結果,因此不應當被視為選項。這-
              茼甈陞u有在使用   GNU   C  庫時有效,並且只有在  POSIXLY_CORRECT
              沒有設置的時唌C

E DIAGNOSTICS
       一般地,如果找到了選擇的行,退出時狀態-
       0,否則為1。但是如果發生錯誤,退出時狀態O2,除非指定了    -q--quiet--silent 選項,並且找到了選擇的行。

BUGS

       bug      報告的電子郵件地址是       bug-gnu-utils@gnu.org。       一定-
       n在"Subject:"中帶有 "grep" 這茧。

       在             {n,m}             結構中契_次數過多會導P            grep
       使用大量記憶體。另外,一些過分晦澀的正則表達式需-
       n指數級的時間和空間,可能會導P grep 耗盡所有記憶體。

       向後引用 (backreferences) 非常慢,可能需n指數級的時間。

[]
      KAv <bbbush@163.com>

[]
       2003.11.03

mlinuxan:
       http://cmpp.linuxforum.net

                                  GNU Project                          GREP(1)