grep 是 General Regular Expression Parser(通用正则表达式解析器)的缩写。

grep 命令可以在文件中搜索字符串。语法如下所示:

 grep [options] PATTERN [FILES]

 如果没有文件名,grep 则搜索标准输入。

grep 中一些主要 选项

选项

含义

-c

输出匹配行的数目,而不输出匹配的行

-E

启用扩展表达式

-h 

取消每个输出行的普通前缀,即匹配查询模式的文件名

-i

忽略大小写

-l

只列出匹配行的文件名,而不输出匹配行

-v

对匹配模式取反,即搜索不匹配行

grep 中使用正则表达式,正则表达式允许你实现更复杂的匹配。

正则表达式中一些特殊字符

字符

含义

   ^

指向一行的开头

  $

指向一行的结尾

 .

任意一个档次

 [ ]

方括号内包含一个字符范围,其中任何一个字符都可以被匹配,例如字符范围 a~e

或在字符范围前面加上 ^ 符号表示反向字符范围,即不匹配指定范围的字符

如果想将上述字符作为普通字符,就需要在他们前面加上 \ 字符。例如 \$

在方括号中还可以使用一些特殊的匹配模式, 如下表:

匹配模式

含义

[:alnum:]

字母与数字字符

[:alpha:]

字母

[:ascii:]

ASCII 字符

[:blank:]

空格或制表符

[:cntrl:]

ASCII 控制字符

[:digit:]

数字

[:graph:]

非控制、非空格字符

[:lower:]

小写字母

[:print:]

可打印字符

[:punct:]

标点符号字符

[:space:]

空白字符,包括垂直制表符

[:upper:]

大写字母

[:xdigit:]

十六进制数字

 

 

如果 grep 指定了用于扩展的 -E 选项,那些用于控制匹配完成的其他字符可能会遵循正则表达式的规则(如下表),在grep 中我们还需要在下表中的字符前加上 \ 字符;

选项

含义

 ?

匹配是可选,当最多匹配一次

 * 

必须匹配 0 次或多次

 +

必须匹配一次货多次

{n}

必须匹配 n  次

{n,}

必须匹配 n 次或 n 次以上

{n, m}

匹配次数在 n 和m 之间,包括n 和 m

示例 :

1、在 test.txt 中查找已 字母 e 结尾的行

grep e$ test.txt

2、在 test.txt 中查找以字母 e 结尾的单词, 我们需要 [] 和 [:blank:]

grep e[[:blank:]] test.txt

3、在 test.txt 中查找以 Th 开头的由三个字母组成的单词。用[[:space]] 划定单词结尾,用字符 . 匹配额外的字符

grep Th.[[:space:]] test.txt

4、查找只有 10 个字符长度的全部由小写字母组成的单词。我们需要指定字符的范围 a 到 z,同时需要重复 10 次。

grep -E [a~z]\{10\} test.txt