grep 命令用于搜索由 Pattern 参数指定的模式,并将每个匹配的行写入标准输出中。这些模式是具有限定的正则表达式,它们使用 ed 或 egrep 命令样式。grep 命令使用压缩的不确定算法。
如果在 File 参数中指定了多个名称,grep 命令将显示包含匹配行的文件的名称。对 shell 有特殊含义的字符 ($, *, [, |, ^, (, ), \ ) 出现在 Pattern 参数中时必须带双引号。如果 Pattern 参数不是简单字符串,通常必须用单引号将整个模式括起来。在诸如 [a-z] 之类的表达式中,-(减号)cml 可根据当前正在整理的序列来指定一个范围。整理顺序可以定义等价的类以供在字符范围中使用。如果未指定任何文件,grep 会假定为标准输入。
注:
请勿对特殊文件运行 grep 命令,这样做可能产生不可预计的结果。
输入行不应包含空字符。
输入文件应该以换行符结束。
换行符不会与正则表达式匹配。
虽然一些标志可以同时被指定,但其中的某些标志会覆盖其他标志。例如,-l 选项将优先于所有其他标志。另外,如果您同时指定了 -E 和 -F 标志,则后指定的那个会有优先权。
标志
-b 在每行之前添加找到该行时所在的块编号。使用这个标志有助于通过上下文来找到磁盘块号码。-b 标志不能用于来自标准输入和管道的输入。
-c 仅显示匹配行的计数。
-E 将每个指定模式视作扩展的正则表达式(ERE)。ERE 的空值将匹配所有的行。
注:带有 -E 标志的 grep 命令等价于 egrep 命令,只不过它们的错误和使用信息不同以及 -s 标志的作用不同。
-e PatternList 指定一个或多个搜索模式。其作用相当于一个简单模式,但在模式以 -(减号)开始的情况下,这将非常有用。模式之间应该用换行符分隔。连续使用两个换行符或者在引号后加上换行符 ("\n) 可以指定空模式。除非同时指定了 -E 或 -F 标志,否则每个模式都将被视作基本正则表达式(BRE)。grep 可接受多个 -e 和 -f 标志。在匹配行时,所有指定的模式都将被使用,但评估的顺序没有指定。
-F 将每个指定的模式视作字符串而不是正则表达式。空字符串可匹配所有的行。
注: 带有 -F 标志的 grep 命令等价于 fgrep 命令,只不过它们的错误和使用信息不同以及 -s 标志具有不同的作用。
-f PatternFile 指定包含搜索模式的文件。模式之间应该用换行符加以分隔,空行将被认为是空模式。每种模式都将被视作基本的正则表达式(BRE),除非同时指定了 -E 或 -F 标志。
-h 禁止在匹配行后附加包含此行的文件的名称。当指定多个文件时,将禁止文件名。
-H 如果指定了 -r 或 -R 选项并且在命令行上指定了引用文件类型目录的符号链接,则 grep 将搜索符号链接所引用的目录文件以及文件层次结构中在它以下的所有文件。
-i 在进行比较时忽略字母的大小写。
-l 仅列出(一次)包含匹配行的文件的名称。文件名之间用换行符加以分隔。如果搜索到标准输入,将返回(标准输入)的路径名。-l 标志同 -c 和 -n 标志的任意组合一起使用时,其作用类似于仅使用了 -l 标志。
-L 如果指定了 -r 或 -R 选项,并且引用文件类型目录的符号链接在命令行上指定或在文件层次结构转移过程中遇到,则 grep 将搜索符号链接所引用的目录文件以及文件层次结构中在它以下的所有文件。如果同时指定了 -H 和 -L,则命令行上最近指定的选项将生效。
-n 在每一行之前放置文件中相关的行号。每个文件的起始行号为 1,在处理每个文件时,行计数器都将被复位。
-p[ Separator] 显示包含匹配行的整个段落。段落之间将按照 Separator 参数指定的段落分隔符加以分隔,这些分隔符是与搜索模式有着相同格式的模式。包含段落分隔符的行将仅用作分隔符,它们不会被包含在输出中。缺省的段落分隔符是空白行。
-q 禁止所有写入到标准输出的操作,不管是否为匹配行。如果选择了输入行,则以零状态退出。-q 标志同 -c 和 -l、-n 标志的任意组合一起使用时,其作用类似于仅使用了 -q 标志。
-r 递归地搜索目录。在缺省情况下,按照到目录的链接。
-r 递归地搜索目录。在缺省情况下,不按照到目录的链接。
-s 禁止通常因为文件不存在或不可读取而写入的错误信息。其他的错误信息并未被禁止。
-v 显示所有与指定模式不匹配的行。
-w 执行单词搜索。
-x 显示与指定模式精确匹配而不含其他字符的行。
-y 当进行比较时忽略字符的大小写。
PatternList 指定将在搜索中使用的一个或多个模式。这些模式将被视作如同是使用 -e 标志指定的。
File 指定将对其进行模式搜索的文件的名称。如果未给出 File 变量,将使用标准输入。
退出状态
此命令返回以下出口值:
0 找到匹配项。
1 未找到匹配项。
>1 发现语法错误,或者文件不可访问(即使找到了匹配项)。
示例
若使用包含以下模式匹配字符的模式:*, ^, ?, [, ], \(, \), \{ 和 \},请输入:
grep "^[a-zA-Z]" pgm.s
这将显示 pgm.s 中第一个字符为字母的所有行。
若显示所有与模式不匹配的行,请输入:
grep -v "^#" pgm.s
这将显示 pgm.s 中首字母不是 #(井字符)的所有行。
若显示文件 file1 中与abc 或 xyz 字符串匹配的所有行,请输入:
grep -E "abc|xyz" file1
若在名为 test2 的文件中搜索 $(美元符号),请输入:
grep \\$ test2
为了强制 shell 将 \$(单反斜杠和美元符号)传递给 grep 命令,必须要使用 \\(双反斜杠)。\(单反斜杠)字符可通知 grep 命令将其后的字符(本例中为 $)视作原义字符而不是表达式字符。如果使用 fgrep 命令,则可以不必使用反斜杠之类的转义字符。
通过 /tmp 递归地搜索以找到含有字 IBM 的文件,而不是通过指向目录的链接进行递归搜索,请输入:
grep –R IBM /tmp
或
grep –r -H IBM /tmp
要通过 /tmp 递归地搜索以找到含有词 IBM 的文件,同时也通过链接进行递归搜索,请输入:
grep –r IBM /tmp
或
grep -R -L IBM /tmp
文件
/usr/bin/grep 包含 grep 命令。
本篇文章来源于 飞扬教程 原文链接:http://www.51fy.cn/system/AIX/200708/41624.htm
分享到:
相关推荐
本主题聚焦于“从文本文件中查找字符串”,这是一个常见的需求,例如在源代码中寻找特定函数或变量,或者在日志文件中查找关键信息。这个过程可以帮助开发者定位问题,理解代码逻辑,或者对数据进行分析。 首先,...
"多个文件中查找字符串"这个主题涉及到的是如何有效地在一系列文件中定位特定的文本片段。以下是对这个主题的详细解释: 一、基础概念: 1. 文件:在计算机系统中,文件是数据的集合,可以包含文本、图片、音频、...
(1)字符串参数最好采用是双引号括,一是以防被误解为shell命令,二是可以用来查找多个单词组成的字符串 -c:只输出匹配行的记数 -i:不区分大小写(只适用于单个字符) -h:查询多个文件时不显示文件名 -H:只显示...
- 命令格式:`grep -r "被查找的字符串" 文件目录` 8. **列出包含匹配内容的文件名** - 结合使用`-H`和`-r`参数来列出包含匹配内容的文件名。 - 命令格式:`grep -H -r "被查找的字符串" 文件目录 | cut -d: -f1...
例如,`grep`命令在Linux/Unix系统中是一个强大的文本搜索工具,它支持正则表达式匹配,并能快速地在多个文件中查找字符串。而在编程环境中,Python的`re`模块提供了正则表达式的功能,使得搜索更为灵活和强大。 ...
在IT行业中,字符串查找与替换是一项基础且至关重要的操作,尤其在文本处理、编程和数据分析等领域。本主题将深入探讨如何在批量任何文件中进行字符串查找替换,这涉及到多个技术层面,包括基本概念、实现方法以及...
例如,使用 find /etc -name * | xargs grep wl0505 命令可以查找 etc 目录下含有字符串"wl0505"的文件。 grep 命令也支持正则表达式,例如 ^符号表示锚定行的开始,$符号表示锚定行的结束,.符号表示匹配一个非换...
首先,要在grep命令中查找包含制表符的字符串,我们需要了解在正则表达式中如何表示制表符。制表符在正则表达式中表示为\t。因此,如果我们要在文本文件中查找包含制表符的行,可以直接在grep命令中使用\t。例如,...
这种工具通常用于搜索指定目录下的所有文件,或仅搜索指定文件中的文本字符串。例如,Windows系统自带的“Find”命令和“FindStr”命令,以及在Linux/Unix环境中广泛使用的“grep”命令,都是典型的字符串查找工具。...
当我们需要在大量文本文件中快速查找并替换特定字符串时,`sed`(Stream Editor)就是一个非常强大的工具。`sed` 是一个流编辑器,它可以从输入流(通常是文件或管道)中读取数据,对数据进行处理,然后将处理后的...
Linux 中的 grep 命令是一种功能强大的文本搜索工具,通过模式匹配来查找文件中的内容。grep 命令可以根据用户的需求来查找特定的字符串、数字或正则表达式。 grep 命令的基本格式 grep [options] pattern [file] ...
- `模式`:可以是简单的文本字符串或者正则表达式。 - `文件名`:要搜索的文件,可以是单个文件或多个文件,甚至可以是通配符表示的一组文件。 2. **基本选项** - `-i`:忽略大小写。 - `-v`:反向匹配,显示不...
在Linux和Unix操作系统中,`grep`是一个强大的文本搜索工具,用于在文件中查找指定的字符串或模式。然而,有时我们并不希望在搜索过程中包含隐藏文件夹,比如`.svn`目录,因为它通常包含版本控制系统的信息,对普通...
例如,你可以用`grep "特定字符串" 文件名`来查找文件中包含指定字符串的行。如果需要在多个文件或目录中查找,可以使用通配符或者递归选项。`grep`还有许多其他高级功能,比如忽略大小写、反向匹配、只显示不匹配的...
例如,要在"/home/user/Documents/file.txt"中查找字符串"example",命令为`grep -n "example" /home/user/Documents/file.txt`。 `grep`还有许多其他选项,如`-r`(递归搜索目录)、`-i`(忽略大小写)和`-v`...
`findstr`是Windows操作系统内建的一个命令行工具,它允许用户在一批文件中搜索指定的字符或字符串,提供了类似于Unix/Linux系统中的`grep`命令的功能。 `findstr`命令的基本语法如下: ```cmd findstr [/选项] ...
**grep** 命令用于在文件中搜索指定的字符串或模式,并输出包含该字符串或模式的行。它是基于文件内容进行查找的命令。 ##### 1. 基本格式 ```bash grep expression file ``` - **expression**: 要查找的模式或...
grep 的工作方式是在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。 grep 可用于 shell 脚本,因为 grep 通过...
在命令行环境中,如Unix/Linux或Windows的PowerShell,`grep`命令是一个强大的工具,可以用来快速在文件中查找匹配的字符串。例如,要查找"SCAN.BAS"中包含“特定字符串”的行,可以运行以下命令: ```bash grep ...
4. **文本编辑器中的查找功能**:像Vim、Emacs这样的高级文本编辑器内置了强大的字符串查找和替换功能,可以进行逐行搜索、在整个文件中查找,甚至在整个项目中查找。 5. **编程语言中的字符串查找**:在各种编程...