grep命令解析,常用选项以及egerp、fgerp

GREP(1) General Commands Manual GREP(1)

NAME

grep, egrep, fgrep - 打印匹配给定模式的行

总览 SYNOPSIS

g搜索文件名rep [options] PATTERN [FILE...]

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

描述 DESCRIPTION

Grep 搜索以 FILE 命名的文件输入 (或者是标准输入,如果没有指定文件名,或者给出的文件名是 - 的话),寻找含有与给定的模linux系统安装式 PATTERN 相linux系统匹配的内容的行。

默认情况下, gre正则表达式中*代表p 将把含有匹配内容的行打印出来。

另外,也可以使用两个变种程序 egrep 和 fgrep 。 Egr文件名由什么和什么两部分组成ep系统运维工资一般多少 与 grep -E 相同。 Fgrep 与 grep -F 相同。

选项 OPTIONS

-A NUM, --after-conte搜索引擎营销xt=NUM

打印出紧随匹配的行之后的下文 NUM 行。在相邻的匹配组之间将会打印内容是 -- 的一行。

-a, --text

将一正则表达式英文个二进搜索引擎营销制文件视为一个文本文件来处理;它与 --binary-files=text 选项等价。

-B NUM,linux必学的60个命令 --before-conte正则表达式pythonxt=NUM

打印出匹配的行linux操作系统基础知识之前的上文 NUM 行。在相邻的匹配组之间将会打印内容是 -- 的一行。

-C NUM, --context=NUM

打印出匹配的行的上下文前后各 NUM 行。在相邻的匹配组之间将会打印内容是 -- 的一行。

-b, --byte-offset

在输出的每行前面同时打印出当前行在输入文件中的字节偏移量。

--binary-files=TYPE

如果一个文件的起始几个字节表搜索文件名明文件包含二进制数据,那么假定文件是 TYPE 类型的。默认情况下, TYPE 是 binary ,并且 grep

一般会输出一个一行的消息说一个二进制文件匹配,或者如果没有匹配的话就没有消息输出。如果类型 TYPE 是 without-match ,那么 grep

假定二进制文件不会匹配;这样做与 -I 选项等价。如果类型 TYPE 是 text文件名目录名或卷标语法不正确 ,那么 grep 将搜索软件一个二进制文件视为文本文件来处理;它与 -a 选项等价。 警告: grep

--binary-files=text 可能会输出二进制的无用内容linux必学的60个命令。如果输出设备是一个终端,并且终端的驱动将这些输出中的一些当作命令,可能会带来恶劣的副作用。

--colour[=WHEN], --color[=WHEN]

在匹配的行周围以 GREP_COLOR 环境变量中指定的记号来标记。WHEN 可以是文件名目录名或卷标语法不正确 `never', `always', 或是linux命令 `auto'。

-c, --count

禁止通常的输出;作为替代,为每一个输入文件打印一个匹配的行的总数。如果使用 -v, --invert-match 选项 (参正则表达式菜鸟教程见下面正则表达式英文),将是不匹配的行的总数。

-D ACTION, --linux常用命令devices=ACTION

如果输入文件是一个设备,FIFO 或是套接字 (socket) ,使用动作 ACTION 来处理它。默认情况下,动作 ACTI搜索历史ON 是搜索的近义词 read

正则表达式英文意味着设备将视为普通文件那样来读。如果动作 ACTION 是 skip ,将不处理而直接跳过设备。

-d ACTION, --directories=ACTION

如果输入文件是一个目录,使用动作 ACTION 来处理它。默认情况下,动作 ACTION 是 read ,意味着目录将视为普通文件那样来读。如果动作 ACTION 是 skip

,将不处理而直接跳过目录。如果动作 ACTION 是 recur搜索图片识别se , grep 将递归地读每一目录下的所有文件。这样文件名不能用的符号做和 -r 选项等价。

-E, --extended-regexp

将模式 PATTERN 作为一个扩展的正则表达式来解释 (参见下面)。

-e文件名中不能包含的字符 PATTERN, --reg系统运维工程师exp=PATTERN

使用模式 PATTERN 作为模式;在linux必学的60个命令保护以 - 为起始的模式时有用。

-F, --fixed-strings

将模式 PATTERN 视为一个固定的字符串的列表,用新行 (newli正则表达式是什么意思nes) 分隔,只要匹配其中之一即可。

-P, --perl-regexp

将模式 PATTERN 作为一个 Perl 正则表达式来解释。

-f FILE, --file=FILE

从文件 FILE 中获取模式,每行一个。空系统运维工资一般多少文件含有0个模式,因此不匹配任何东西。

-G, --basic-r正则表达式中*代表egexp

将模式 PATT文件名的命名规则是什么ERN 作为一个基本的正则表达式 (参见下面) 来解释。这是默认值。

-H, --with-fil文件名最多多少个字符ename

为每个匹配打印文件名。

-h, --no-filename

当搜索多个文件时,禁止在输出的前面加上文件名前缀。

--help 输linux重启命令出一个简短的帮助信息。

-I 处理一个二进制文件,但是认为它不包含匹配的内容。这和 --binarylinux删除文件命令-files=withoulinux系统t-match 选项等价。

-i, --ignore-case

忽略模式 PATTERN 和输入文件中的大小写的分别。

-L, --files-without-match

禁止通常的输出;作为替代,打印出每个在通常情况下不会产生输出的输入文件的名字。对每个文件的扫描在遇到第一个匹配的时候就会停止。

-l, --linux常用命令files-with-matches

禁止通常的输出;作为替代,打印出每个在通系统/运维常情况下会产生输出的输入文件的名字。对每个文件的扫描在遇到第一个匹配的时候就会停止。

-m NUM, --max-count=NUM

在找到 NUM 个匹配的行之后,不再读这个文件。如果输入是来自一个普通文件的标准输入,并且已经输出了 NUM 个匹配的行, grep

保证标准输入被定位于退出时的最后一次linux匹配的行之后,不管是否指定了要输出紧随的下文的行。这样可以使一个调用程序恢linux删除文件命令复搜索。当 grep 在 NUM

个匹配的行之后停止,它会输出任何紧随的下文的行。当使用了 -c 或 --count 选项的时候正则表达式菜鸟教程linux删除文件命令 grep 不会输出比 NUM 更多的行。当指定了 -v 或 --invert-ma搜索文件名tch

选项的时候, grep 会在输出 NUM 个不正则表达式转义符匹配的行之后停搜索文件名止。

--mmap 如果可能的话,使用 mmap(2) 系统调用来读取输linux命令入,而不是默认的 read(2) 系统调用正则表达式元字符。在一些情况下, --mm文件名的命名规则是什么ap 提供较好的性能。但是,如果一个输入文件在 grep

正在操作时大小发生变化,或者如果发生了一个 I/O 错误, --mmap 可能导致不可知的行为 (包括core正则表达式是什么意思 dumps)。

-n, --line-number

在输出的搜索图片识别每行前面加上它所在的文件中它的行号。

-o文件名目录名或卷标语法不正确, --only-matching

只显示匹配的行中与 PATTERN 相匹配的部分。

--label=LABEL

将实际上来自标准输入的输入视为来自输入文件 LABEL 。这对于 zgrep 这样的工具非常有linux系统用,例如: gzip -cd foo.gz |grep --搜索引擎排名label=foo somet搜索引擎排名hin搜索g

--line-buffering

使用行缓冲,it can be a performance pe正则表达式pythonnal文件名的命名规则是什么ity.

-q, --quiet, --silent

安静。不向标准输出写任何东西。如果找到任何匹配的内容就立即以状态值 0 退出,即使检测到了错误。 参见 -s 或 --no-messages 选项。

-R, -r, --recursive

递归地读每一目录下的所有文件。这样做和 -d recurse 选项等价。

--include=PATTERN

仅仅在搜索匹配 PATTERN 的文件时在目录中递归搜索。

--exclude=PATTERN

在目录中递归搜索,但是跳过匹配 PATTERN 的文系统运维工资一般多少件。

-s, --no-messages

禁止输出关于文件不存在或不可正则表达式读的错误信息。 对于可移linux常用命令植性需要注意:与 GNU grep 不同,传统的 grep 不遵守 POSIX.2 规范,因为传统的 grep 缺少一个 -q

选项,而它的 -s 选项与 GNU grep 的 -q 选项行为相似。需要可移植到传统 grep 的 shell 脚文件名不能用的符号本应当避免使用 -q 和 -s 选项,而应当将输出重定向到 /dev/null 。

-U, --binary

将文件linux操作系统基础知识视为二进制。默认情况下,在 MS-DOS 和 MS-Windows 系统中, grep 通过从文件中读取头部的 32kB 内容来判断它的文件类型。如果 grep

判断文件是一个文本文件,它搜索软件将原始文件内容中的 CR 字符去除 (使得含有 ^ 和 $ 的正则表达式可以正常工作)。指定 -U

将不系统运维工资一般多少进行这些工作,而使所有文搜索历史件保持不变地读取并传递给匹配机制。如果文件是一个以 CRlinux/LF 换行的文本文件,这样作将导致一些正则表达式失败。这个选项在 MS-

DO搜索的近义词S 和 MS-Windows 之外的系统中无效。文件名怎么改

-u, --unix-byte-offsets

报告 Unix 风格的字节偏移量。这个开关使得 grep 报告字节偏移量时,将文件作为 Unlinux是什么操作系统ix 风格的文本文件看待,也就是说将 CR 字符去掉。这将产生与搜索历史在一台 Uni正则表达式语法x

主机上运行 grep 完全相同的结果。除非同时使用 -b 选项,否则这个选项无效。这个选项在 MS-DOS 和 MS-Wi文件名怎么改ndows 之外的系统中无效。

-Vlinux, --version

向标准错误输出打印 grep 的版本号。版本号应当linux包含在所有的 bug 报告中 (参见下面)。

-v, --invert-match

文件名中不能包含的字符变匹配的意义,只选择不匹配的行。

-w, --word-regexp

只选择含有能组成正则表达式英文完整的词的匹配的搜索文件名行。判断方法是匹配的子字符串必须是一行的开始,或者是在一个不可能是词的组搜索的拼音成的字搜索符之后。与此文件名由什么和什么两部分组成相似,它必须是一行的结束,或者

是在一个不可能是词的组成的字符之前。词的组成字符是字母,数字,还有下划线。

-x, --line-regelinux必学的60个命令xp

只选择能匹配完整一行的匹配。

-y -i 的同义词,废弃不用。

-Z, --null

linux命令出一个全零字节 (ASCII 码中的 NUL 字符) 而不是一般情况下输出在文件名之后的字符。例如, grep -lZ

在每个文件名之后输出一个全零字节而不是普通的新行符。这个选项使得输出清楚明白,即使文件名的表示中包含特殊字符比如新行符。这个选项可以与命令 find

-print0, perl -0, sort -z, 和 xargs -0 一起使用,来处理任意的文件名,即使是那些含有新行符的文件名。

正则表达式 REGULAR EXPRESSIONS

一个正则表达式是一个描述了一个字符串集合的模式文件名乱码怎么找回来。正则表达式的构造类似于算术表达式,使用各种各样的操作符来将更小的表达式连在一起。

Grep 能理linux解两种不同版本的正则表达式语法:“basic” 和 “extended”。在 GNU grep 中,两种语法可以实现的搜索的近义词功能是没有区别的。在其他实现中,基本 (basic)

正则表达式表达能力要弱一点。下面的描述适用于扩展的 (extended) 正则表达式,它与基本正则表达式的区别会在最后做一个总结。

基本的构造块是匹配单个字符的正则表达式。大部分字符,包括所有字母和数字,是匹配它们自身的正则表达式。任何具有特殊linux是什么操作系统含义的元字符可以通过前置一个反斜杠来引用。(may

be quoted by preceding it with a backslash.)

方括号表达式 (bracket)正则表达式语法 是一个字符序列,放在 [ 和 ] 当中。它匹配序列中的任何一个字符;如果序列中的第一个字符是脱字符 (caret) ^ 那么它匹配 不在

linux必学的60个命令列中的任何一个字符。例如,正则表达式 [0123456789] 匹配任何一个数字。

在方括号表达式之中,一个 范围表达式 (range) 由两个字符组成正则表达式中*代表,中间用一个连字符 (hyphen)

分隔。它匹配在这两个字符之间的任何一个字符,使用本地化的序列顺序和字符集。(that sorts between the two characters,inclusive, using the local文件名中不能包含的字符e's collating

sequence an系统运维工程师d character set.) 例如,在默认的 C locale中, [a-d] 与 [abcd] 等价。典型linux系统安装的,许多 loca文件名中不能包含的字符le 将字符以字典顺序排序,在这些 locale 中, [a-d] 不与

[abcd] 等价;例如它可linux命令能与 [aBbCcDd] 等价。要获得传搜索的拼音统的对方括号表达式的解释,可以设定环境变量 LC_ALL 值为 C 来使用 localinux系统le C 。

最后,在方括号表达式中有一些预定义的字符类,linux系统安装如下所示。它们的名字是自说明的,它们是 [:alnum:](字母和数字), [:alpha:](字母), [:cntrl:](), [:digit:](数字),

[:graph:](), [:lower:](小写字母), [:print:](可打印字符), [:punct:](), [:space:](空格), [:upper:](大写字母), 和 [:xdigit:] 。例如, [[:alnum:]] 意思是

[0-9A-Za-z] ,但是后一种表示方法依赖于 locale C 和ASCII 字符编码,搜索历史而前搜索历史一种是与 locale

和字符集无关的。(注意这些字符类名中的方括号也是符号名称的一部分,必须包含在用来为序列定界的方括号之中文件名不能用的符号。)

大多数元字符搜索处于序列中时会失去它们的特殊意义。为了包含一个字面意义 (l系统/运维iteral) 的 ] ,需要将它放在序列的最前。与此相似,为了包含文件名一个字面意义 (literal) 的 ^

,需要将它放在除了序列最前之外的其他位置。最后,为了包含一个字面意义 (literal) 的 - ,需要将它放在序列最后。

句点符 (period) . 匹配任何一个字符。符号linux删除文件命令 \w 是 [[:alnum:]] 的同义词, \W文件名怎么改 是 [^[:alnum]] 的同义词

脱字符 (caret) ^ 和美元标记 (dollar)文件名无效是怎么回事 $ 分别是匹配一行的首部和尾部搜索的近义词的空字串的元字符。符号 \< 和 \> 分别是匹配一个词的首部和尾部的空字串的元字符。符号 \b

匹配一个搜索引擎排名词边缘 (edge) 的空字串,符号 \B 匹配 不 处于一个词的边缘的空字串。

一个正则表达式后面可以跟随多种重复操作符之一。

? 先前的项是可选的,最多匹配一次。

* 先前linux的项可以匹配零次或多次。正则表达式菜鸟教程

+ 先前的项可以匹配一次或多次。

{n} 先前的项将匹配恰好 n 次。

{n,} 先前的项可以匹配 n 或更多次。

{n,m} 先前的项将匹配至少 n文件名的命名规则是什么 词,但是不会超过 m 次。

两个正则表达式可以连接到一起;得出的正则表达式可以匹配任何由两个分别匹配连接前的子表达式的子字符串连接正则表达式语法而成的字符串。

两个正则表达式可以用中缀操作符 | 联合到一起,得出的正则表达式可以匹配任何匹配联合前的任何一个子表达式的字符串。

重复操作符linux删除文件命令的优先级比连接高,接下来又比选择的优先级高。一个完整的子表达式可以用圆括号 (parentheses) 括住搜索来超越这些优先级规则。(to overr搜索引擎营销ide these precedence

rules.)

反向引用 \linux系统n 中, n 是文件名怎么改一个数字,匹配正则表达式中,以第 n 个圆linux系统括号括住的子表达式已匹配的子字符串。

在基本正则表达式中,元字符 ?, +, {, |, (, 和 ) 丧失了它们的特殊意正则表达式是什么意思义;作为替代,使用加反斜杠的 (backslash) 版本 \?, \+, \{, \|, \(, 和 \)文件名由什么和什么两部分组成

传统的搜索的拼音 egrep 不支持元字符 { ,并且一些 egrep 的实现通过支持 \{ 来正则表达式转义符代替它,因此可移植的脚本应当避免 在 egrep 中使用 { 模式,应当使用 [{] 来匹配一个字面意义

(literal) 的 { 。

GNU egrep 通过假设如果 { 处于 an invalid interlinux必学的60个命令val specification 的起始,就不是一个特殊字符,来支持传统的用法。例如,shell 命令 egrep '{1'

将会搜索这个两字符的字符串 {1 而不是报告在正则表达式中发生了语法错误。POSIX.2 允许这个行为,将其视为一个扩展,但是可移植的脚本应当避免使用它。

环境变量 E搜索引擎营销NVIRONMENT VARIABLES

Grep 的行为受下列环境变linux量影响。

一个 locale LC_foo 是通过按下面的顺序, LC_ALL, LC_foo, LANG, 检查这三个环境变量的取值而确定的。设置了的第一个变量指定了 locale。例如,如系统运维工程师果 LC_ALL

没有设置,但是 LC_MESSAG搜索ES 设置为 pt_BR ,那么巴西的葡萄牙搜索软件语 (Brazilian Portugues正则表达式元字符e) 将用作 LC_MESSAGES localinux是什么操作系统le

的值正则表达式python。如果没有设置这其中任何一个环境变量,或者没有安装所设置的 locale 目录,或者如果 grep 没有将国家和语言支持 (national language suppor搜索文件名t (NLS))

编译在内,将默认使用 locale C。

GREP_OPTIONS

这个变量指定了将放在所有显式指定的选项之前的默认选项。系统/运维例如,如果 GRE文件名目录名或卷标语法不正确P_OPTIONS 是 '--binary-files=without-m正则表达式菜鸟教程a文件名无效是怎么回事tch --directories=skip' 的话, grep

将像已经在任何显式指定文件名目录名或卷标语法不正确的选项之前指定了 --binary-files=without-match 和 --directories=skip 选项那样来运作。选项以空白 (whitespace) 分隔。一个反斜杠

(backslash) 使得下一个字符转义 (escape),因此可以用来指定一个含有空白或者反斜杠的选项。

GREP_COLOR

指定用来高亮显示的标搜索的拼音记。

LC_ALL, LC_C搜索明蕴镇任务怎么做OLLATE, L正则表达式菜鸟教程ANG

这些变量指定了文件名乱码怎么找回来 locale LC_COLLATE ,决定了解释类似 [a-z] 的范围表达式时的序列顺linux命令序 (collating sequence) 。

LC_ALL, LC_CTYPE, LANG

这些选项指定了 locale LC_CTYPE ,决定了字符的类型,例如,哪些字符是linux系统空白 (whitespace) 。

LC_ALL, LC_MESSAGES, LANG

这些选项指定了 locale LC_MESSAGE搜索的拼音S ,决定了 grep 的消息使用的语言。默认的 locale C 使用美国英语的消息。

POSIXLY_搜索图片识别CORRECT

如果设置了的话, grep 将像 POSIX.2 要求的那样来运作;否则, grep 将像其他 GN系统运维工资一般多少U 程序一样来运作。搜索引擎排名POSIX.2

要求文件名之后的选项必须视为文件名;默认情况下,这文件名些选项被交换到操作数列表的前面,被当作选项来处理。同时, POSIX文件名不能用的符号.2

要求不可识别的选项搜索软件在诊断消息中表示为正则表达式匹配字符串 “il搜索的拼音legal”,但是既然它们没有真正触犯法律,因此默认情况下它们在诊断 (diagnose) 消息中文件名的命名规则是什么正则表达式元字符示为 “invalid”正则表达式语法

POSIXLY_CORRECT 同时禁止了下面描文件名乱码怎么找回来述的 _N_GNU_nonoption_argv_flags_。

_N_GNU_nonop文件名tion_argv_fl文件名不能用的符号ags_

(这里 N 是 grep's 数字形式的进程ID。) 如果这个环境变量的值的第 i 个字符搜索引擎营销是 1 ,那么不将 grep 的第 i 个操作数视为一个选项,即使它看上去像。shell

可以将这个变量设置在文件名最多多少个字符它运行的每个命令的环境中,指定哪个操作linux数是文件名通配符扩展的结果,因此不应当被视为选项。这个行为只有在使用搜索的近义词 GNU C

库时有效,并且只有在 POSIX系统运维工作内容LY_CORRECT 没有设置的时候。

诊断 DIAGNOSTICS

一般地,如果找到搜索历史了选择的行,退出时状态值为0,否则为1。但是如果发生错误正则表达式是什么意思,退出时状态值是2,除非指定了 -q 或 --quiet 或 -文件名-silent 选项文件名的命名规则是什么,并且找到了选择的行。

BUGS

bug 报告的电子邮件地址是 bug-文件名乱码怎么找回来gnu-utils@gnu.org。 一定要在“Subject:”中带有 “grep” 这个词。

在 {n,m} 结构中重复次数过多会导致 grep 使用大量内存。另外,一些过分晦涩的正则表达式需要指数级的时间和空间,可能会导致 grep 耗尽所有内存。

向后引用 (backreferences) 非常慢,可能需要指数级的时间。