1.本文为info man的译文,基本按照原文翻译,有几个用不上的选项没有翻译,但为了文章的完整性,给出了原文。

2.译文中有些"(注:)",为本人自行加入,帮助理解和说明,非原文内容!

本人译作集合:http://www.cnblogs.com/f-ck-need-u/p/7048359.html


本文目录:

1 简介
2 调用grep程序
  2.1 命令行选项
    2.1.1 一般选项
    2.1.2 控制匹配模式
    2.1.3 控制输出内容
    2.1.4 控制输出行的前缀
    2.1.5 控制输出行的上下文
    2.1.6 筛选文件和目录
    2.1.7 其他选项
  2.2 退出状态码
  2.3 各种grep程序
3 正则表达式
  3.1 基本结构
  3.2 字符类和中括号表达式
  3.3 反斜线字符和特殊的表达式
  3.4 锚定
  3.5 后向引用和子表达式
  3.6 基础正则和扩展正则的比较
4 使用示例
5 已知的一些Bug


1 Introduction


'grep'用于搜索给定文件中能匹配给定pattern列表的行。当某行能匹配上,(默认)将拷贝该行到标准输出,或者根据你所指定的选项生成其它序列的输出。

尽管'grep'所期望的是在文本行中做匹配,但即使某输入行的大小长度超出了可用内存空间也不会受到限制,它仍可以匹配一行中任意字符串。如果输入文件的最后一个字节不是换行符,'grep'会自动补上一个。由于换行符也是pattern列表的分隔符,因此没有任何办法匹配文本中的换行符。

2 Invoking 'grep'


'grep'命令行的一般语法格式为:

grep OPTIONS PATTERN INPUT_FILE_NAMES

OPTIONS部分可以指定0或多个。只有当没有使用"-e PATTERN"或"-f FILE"时,指定的PATTERN才被grep可视。可以指定0或多个INPUT_FILE_NAMES。

2.1 Command-line Options(命令行选项)

'grep'有大量选项可用:一些是POSIX.2中的,一些是GNU扩展的。长选项都是GNU扩展选项,即使它们来自于POSIX。由POSIX指定的短选项,被明确标注为便于POSIX可移植性编程。有少数几个选项是为了兼容古老版本的grep。 有几个额外的选项用于控制使用哪种变体'grep'匹配引擎(注:fgrep/grep/egrep)。

2.1.1 Generic Program Information

'--help'
输出简短的grep命令行使用帮助并退出。

'-V'
'--version'
输出'grep'的版本号。

2.1.2 Matching Control(控制匹配模式)

'-e PATTERN'
'--regexp=PATTERN'
明确指定使用此处的PATTERN作为待匹配的pattern。该选项可以指定多次,它可以保护以"-"开头的pattern。('-e'是POSIX指定的选项。)

'-f FILE'