grep 命令详解

2010-08-11

grep的含义和它名称的来源。

grep 表示“全局查找正则表达式(RE)并且打印结果。”

grep 的选项:

-b 在每一行前面加上其所在的快号,根据上下文定位磁盘块时可能会用到。

-c 显示匹配到的行的数目,而不显示行的内容。

-h 不显示文件名。

-i 比较字符时忽略大小写的区别(既认为字母的大小写相等)。

-l 只列出匹配行所在文件的文件名(每个文件名只列一次),文件名之间用换行符分割。

-n 在每一行前面加上它在文件中的相对行号。

-s 无声操作,即只显示报错信息,以检查退出状态。

-v 反向查找,只显示不匹配的行

-w 把表达式作为词来查找,就好像它被<和>所包含一样。只适用于grep(并非所有版本的grep都支持这一功能,譬如, SCO UNIXJ就不支持)

元字符 功能 示例 匹配内容

^ 行首定位符 ^love 匹配所有以love开头的行

$ 行尾定位符 love$ 匹配所有以love结尾的行

. 匹配单个字符 l..e 匹配包含一个l,后接两个字符,再接一个e的行

  • 匹配零个或多个字符 *love 匹配以零个或多个空格开始,后跟love模式的行

[] 匹配集合中的一个字符 [Ll]ove 匹配包含love或Love的行

[^] 匹配非集合中的一个字符 [^A-K]ove 匹配包含不以A至K之间的某个字符开头,后面接ove的行

< 词首定位符 <love 匹配包含以love 开头的词的行

> 词尾定位符 love> 匹配包含以love结尾的词的行

\(..\) 标签匹配字符 \(love\)able 寄存器中以标记的部分,以数字1记录。将来引用时,用\1重复模式。最多可以使用九个标签,模式最左侧部分为第一个标签。例如,模式love保存在寄存器1中,将来以\1进行引用。

x\{m\} 字符x重复m次 o\{5\} 匹配字母o出现5次的行

x\{m,\} 字符x重复至少m次 o\{5\} 匹配字母o出现至少5次的行

x\{m,n\} 字符x重复m到n次 o\{5,10\} 匹配字母o出现5~10次的行

\w 所有字母与数字,称为字符[a-zA-Z0-9] l\w*e 匹配一个l后跟零个或多个字符,最后接一个e

\W 所有字母与数字之外 的字符,称为非字符[^a-zA-Z0-9] love\W+ 匹配love后接一个或多个非字符(.,?等)

\b 词边界 \blove\b 仅匹配love这个单词