grep-搜索文件以查找模式

主要用法

grep [-E|-F][-c|-l|-q][ -R [-H | -L | -P] ] [-ihnsvwxy] [-e pattern_list] [-f 模式文件] [模式] [文件...]

描述

grep 实用程序搜索给定的输入 文件 选择与一个或多个 模式匹配的行。 模式的类型由指定的选项控制。 缺省情况下,如果模式中的任何正则表达式 (RE) 与没有其尾部换行符的输入行匹配,那么模式将与输入行匹配。 空 RE 与每行匹配。 将与至少一个模式匹配的每个输入行写入标准输出。

如果同时指定了 -E-F 选项,那么将使用指定的最后一个选项。

选项

-E
使用扩展正则表达式 (ERE)。
-F
不识别正则表达式。
-H
如果指定了 -R 选项,那么将遵循命令行上的符号链接。 未遵循在树遍历中迂到的符号链接。
-L
如果指定了 -R 选项,那么将遵循命令行上的符号链接和在树遍历中迂到的符号链接。
-P
如果指定了 -R 选项,那么不会遵循任何符号链接。
-R
如果 file 指定了一个目录,那么 grep 将搜索在该点连接的整个子树中的每个文件。
-c
仅将选定行的计数写入标准输出。
-e
pattern_list 指定一个或多个搜索模式。 每个模式都应以换行符分隔。
-f
pattern_file 指定包含搜索模式的文件。 每个模式都应以换行符分隔。
-h
请勿打印文件名标题。
-i
在进行比较时,将忽略字母的情况。 即,大写和小写被认为是相同的。
-l
只有包含所选行的文件的名称才会写入标准输出。 每个搜索的文件列出一次路径名。 如果搜索标准输入,那么将写入路径名 "-"。
-n
每个输出行前面都有其在文件中的相对行号; 每个文件从第 1 行开始。 对于处理的每个文件,将重置行号计数器。 如果指定了 -c-l-s 选项,那么将忽略此选项。
-q
不打印任何消息的静默方式。 仅返回退出状态。
-s
禁止通常针对不存在或不可读文件写入的错误消息。 不禁止其他消息。
-v
所选行是与指定模式不匹配的行。
-w
表达式作为一个完整的单词进行搜索(就像被"[[:<:]]"和"[[:>:]]"包围一样)。
-x
如果模式是行上的 唯一 内容,那么匹配行。 此选项优先于 -w 选项。 如果同时指定了这两个选项,那么将忽略 -w 选项。
-y
忽略大小写 (与 -i相同)。

操作数

每个 文件 指定文本文件的路径。 如果未指定 file 操作数,那么将使用标准输入。

退出状态

  • 选择了一个或多个行时的 0。
  • 未选择任何行时为 1。
  • 发生错误时> 1。

扩展正则表达式 (ERE)

以下字符由 grep 解释:

$
从行尾对齐匹配。
^
从行首对齐匹配项。 (注: 此字符可能无法在 5250 终端会话中正确工作。)
|
添加其他模式 (请参阅以下示例)。
?
匹配模式的一个或多个顺序重复。
+
匹配模式的一个或多个顺序重复。
*
匹配模式的零个或多个顺序重复。
.
匹配任何单个字符。
[ ]
匹配括在方括号中的任何单个字符或字符范围。

grep具有含义的转义特殊字符,即 {$,.,^,[,],|,?,+,*,(,)}的集合。

示例

  1. 查找文件中出现的所有词 patricia。
    
    grep patricia myfile
    
  2. 查找行开头出现的所有模式 ". Pp"。 单引号确保整个表达式由 grep 而不是由 shell 进行求值。 克拉 (^) 表示从行的开头。
    
    grep '^.Pp' myfile
    
  3. 在文件日历中查找 19,20 或 25。
    
    grep -E '19|20|25' calendar
    
  4. 查找与 "a" 到 "z" 范围内的字符匹配的总行数。
    
    grep -c '[a-z]' reference/alphabet.text
    
  5. 显示其中包含美元符号 ($) 字符的所有行。 必须对美元符号字符进行转义,以使 grep 不会解释该字符。 此外,还显示行号以及包含匹配项的行。
    
    grep -n '\$' valid.file