Linux:文本搜索命令grep

相关阅读

Linuxicon-default.png?t=N7T8https://blog.csdn.net/weixin_45791458/category_12234591.html


        grep是类Unix系统中用于搜索并打印文件中符合某种模式(pattern)的行。grep命令的的基本语法如下所示:

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

        grep搜索命名的输入文件,即最后的[FILE...](如果没有文件或者如果单个连字符-(-)作为文件名给出,则搜索标准输入)中的与给定PATTERN匹配的行。缺省情况下,grep会打印匹配的行。

        此外,还有两个变体命令egrep和fgrep。egrep与grep -E相同。fgrep与grep -F相同。直接调用egrep或fgrep是不建议的,但它允许以前使用了它们的老程序不加修改地运行。

        grep的选项分为几大类,下面分类介绍。

1、总体程序信息

--help

        用法:打印一条用法信息,简要地总结这些命令行选项和错误报告地址,然后退出。

-V, --version

        用法:将grep的版本号打印到标准输出流。这个版本号应该包含在所有的错误报告中(见下文)。

2、匹配器的选择

-E, --extended-regexp

        用法:将PATTERN解释为扩展正则表达式(ERE,见下文)。(-E由POSIX指定。)

-F, --fixed-strings, --fixed-regexp

        用法:将PATTERN解释为固定字符串而不是正则表达式的列表(如果有多项的话),由换行符分隔,其中任何一个都要被匹配。(-F由POSIX指定,--fixed-regexp是一个过时的别名,请不要使用它。)

-G, --basic-regexp

        用法:将PATTERN解释为基本正则表达式(BRE,见下文)。这个选项是默认的。

-P, --perl-regexp

        用法:将PATTERN解释为Perl正则表达式。这是高度实验性的,所以grep-P可能会发出未实现的特性警告。

3、匹配控制

-e PATTERN, --regexp=PATTERN

        用法:使用PATTERN作为模式。这可用于指定多个搜索模式,或保护以连字符(-)开头的模式。(-e由POSIX指定。)

-f FILE, --file=FILE

        用法:从FILE中获取模式,每行一个。空文件包含零模式,因此不匹配任何内容。(-f由POSIX指定。)

-i, --ignore-case

        用法:忽略PATTERN和输入文件中的大小写区别。(-i由POSIX指定。)

-v, --invert-match

        用法:反转匹配的含义,选择不匹配PATTERN的行。(-v由POSIX指定。)

-w, --word-regexp

        用法:用于选择只包含形成整个单词的匹配项的行。具体来说,-w选项要求匹配的子字符串要么位于行的开头或结尾,要么前面和后面有一个非单词构成字符(非字母、数字和下划线)。

-x, --line-regexp

        用法:只选择PATTERN与整行完全匹配的行。(-x由POSIX指定。)

-y

        用法:-i的废弃同义词

4、总体输出控制

-c, --count

        用法:不打印匹配的行,而是打印每个输入文件的匹配行计数。使用-v,--invert-match选项时,对不匹配的行进行计数。(-c由POSIX指定。)

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

        用法:用转义序列包围匹配的(非空)字符串、匹配行、上下文行、文件名、行号、字节偏移量和分隔符(用于上下文行的字段和组),以便在终端上以彩色显示它们。颜色由环境变量GREP_COLOR定义,已弃用的环境变量GREP_COLOR仍然受支持,但其设置没有优先级。WHENnever, alwaysauto

-L, --files-without-match

        用法:不打印匹配的行,而是打印不包含指定模式的文件的文件名。当使用-L选项时,grep会在搜索的文件中查找不包含指定模式的文件,然后只显示这些文件的文件名。每个文件的扫描过程会在找到第一个匹配项后停止。(-L由POSIX指定。)

-l, --files-with-matches

        用法:不打印匹配的行,而是打印包含指定模式的文件的文件名。当使用-l选项时,grep会在搜索的文件中查找不包含指定模式的文件,然后只显示这些文件的文件名。每个文件的扫描过程会在找到第一个匹配项后停止。(-l由POSIX指定。)

-m NUM, --max-count=NUM

        用法:在NUM个匹配行之后停止读取文件。如果输入是来自常规文件的标准输入,并且输出NUM个匹配行,grep将确保在退出之前将标准输入定位在最后匹配行之后,而不管是否存在后面的上下文行。这使调用进程能够恢复搜索。当grepNUM个匹配行之后停止时,它输出任何后面的上下文行。当使用-c--count选项时,grep不会输出大于NUM的计数。当使用-v--invert-match选项时,grep在输出NUM个不匹配的行后停止。

-o, --only-matching

        用法:只打印匹配行中匹配(非空)的部分,每个部分在单独的输出行上。

-q, --quiet, --silent

        用法:沉默;不要向标准输出写入任何内容。如果找到任何匹配项,即使检测到错误,也要立即以零状态退出。另请参见-s-no-messages选项。(-q由POSIX指定。)

-s, --no-messages

        用法:禁用关于不存在或不可读文件的错误消息。可移植性注意事项:与GNU grep不同,第7版Unix grep不符合POSIX,因为它缺少-q,而且它的-s选项的行为与GNU grep-q选项相似。usg风格的grep也没有-q,但它的-s选项表现得像GNU grep。可移植shell脚本应该避免使用-q-s,而应该将标准输出和错误输出重定向到/dev/null。(-s由POSIX指定。)

你可能感兴趣的:(Linux,linux,运维,服务器)