egrep

egrep

egrep命令是一個搜索文件獲得模式,使用些命令可以任意搜索文件中的字元串和符號,也可以為你搜索一個多個文件的字元串,一個提示符可以是單個字元、一個字元串、一個字、一個句子。

egrep 命令


搜索文件獲得模式。

語法


egrep [ -h ] [ -i ] [ -p [ Separator ] ] [ -s ] [ -v ] [ -w ] [ -x ] [ -y ] [ [ -b ] [ -n ] | [ -c | -l | -q ] ] { { -ePattern | -fStringFile } ... | Pattern } [ File ... ]

描述


egrep 命令會在輸入文件(預設值為標準輸入)中搜索與用 Pattern 參數指定的模式相匹配的行。這些模式是完整的 正則表達式就像在 ed 命令中的那樣(除了 \ (反斜杠)和 \\ (雙反斜杠))。下列規則也應用於 egrep 命令:
* 一個正則表達式後面帶一個 + (加號)會匹配一個或多個的正則表達式。
* 一個正則表達式後面帶一個? (問號)會匹配零個或一個該正則表達式。
* 由 | (豎線)或者換行符隔開的多個正則表達式會匹配與任何一個正則表達式所匹配的字元串。
* 一個正則表達式可以被包括在“()”(括弧)中進行分組。
換行符將不會被正則表達式匹配。
運算符的優先順序是 [, ], *, ?, +, 合併, | 和換行符。
注意: egrep 命令與 grep 命令帶 -E 標誌是一樣的,除了錯誤消息和使用消息不同以及 -s 標誌的功能不同之外。
egrep 命令會顯示包含該匹配行的文件,如果您指定了多於一個 File 參數的話。對 shell 有特殊含義的字元 ($, *, [, |, ^, (, ), \ ) 出現在 Pattern 參數中時必須帶雙引號。如果 Pattern 參數不是簡單字元串,通常必須用單引號將整個模式括起來。在表達式中比如 [a-z],減號表示通過當前整理序列。整理序列可以定義等價的類以供在字元範圍中使用。它使用了快速確定性的演演算法,有時需要外部空間。
注意:
1. 行被限制在 2048 位元組。
2. 段落(在 -p 標誌下)當前限制在 5000 字元長。
3. 不要在特殊文件上運行 grep 命令,因為它會產生不可預測的結果。
4. 輸入行不應該包含 NULL 字元。
5. 輸入文件應該以換行符結束。
6. 儘管有些標誌可以同時被指定,但是有些標誌會覆蓋其他的標誌。例如,如果同時指定 -l 和 -n ,只有文件名寫入到標準輸出中去。

標誌


-b 在每行前面加上找到該行的塊號碼。使用此標誌有助於按照上下文查找磁碟塊號碼。-b 標誌不能用於來自標準輸入和管道的輸入。
-c 僅顯示匹配行的計數。
-e 模式 指定一個模式。這象一個簡單的模式,但是它在 模式 以一個 -(負號)開始時很有用。
-f StringFile 指定包含字元串的文件。
-h 當處理多個文件時排除文件名。
-i 當進行比較時忽略字元的大小寫。
-l 列出包含匹配行的文件名(一次)。文件名之間用換行符加以分隔。如果搜索標準輸入,會返回一個 "(StandardInput)" 路徑名。
-n 在每行之前加上該行在文件中的相對行號。
-p[ Separator] 顯示包含匹配行的整個段落。段落之間將按照分隔符 Separator參數指定的段落分隔符加以定界,這些分隔符是與搜索模式有著相同格式的模式。包含段落分隔符的行將僅用作分隔符;它們不會被包含在輸出中。預設的段落分隔符是空白行。
-q 禁止所有的輸出到標準輸出,不管匹配行。如果選中輸入行,以 0 狀態退出。
-s 僅顯示出錯消息。這點對檢查狀態有用。
-v 顯示除了與指定的模式匹配的行之外的所有行。
-w 執行單詞搜索。
-x 顯示與指定模式精確匹配而不含其它字元的行。
-y 當進行比較時忽略字元的大小寫。
退出狀態
此命令返回下列出口值:
0 找到匹配項。
1 未找到匹配項。
>1 發現語法錯誤,或者文件不可訪問(即使找到了匹配項)。

示例


要想使用包含模式匹配字 +, ?, |, (, 和 ) 中的一個擴展模式,請輸入:
egrep "\(([A-z]+|[0-9]+)\)" my.txt
它會顯示那些包含在圓括弧里字母或數字的行,而不是在圓括弧里包含數字字母組合的行。它會匹配 (y) 和 (783902),而不是 (alpha19c)。
注意:當使用 egrep 命令時 \ ( (斜杠後跟著開括弧)或者 \ ( (斜杠後跟著閉括弧)匹配文本中的括弧,但是 ( (開括弧)和 ) (閉括弧)都是模式組部分中的特殊字元。在使用 grep 命令時,逆向也成立。

文件


/usr/bin/egrep 包含指向 egrep 命令的硬鏈接。
/bin/egrep 指定了指向 egrep 命令的符號鏈接。