grep命令详解

grep 能做什么?

主要作用查找字符串。grep是linux中最常用的“文本处理工具”之一,grep与sed,awk合称linux中的三剑额。

grep全称:Global search Regular Expression and Print out the line

Global search: 全局搜索 Regular Expression: 正则表达式 Print out the line: 打印出这一行..

不使用正则表达式也可以使用grep, 只是与正则表达式结合,功能更强大。

grep 的一些常用参数

-i 不区分大小写

-n 显示行号

--color 对匹配到的字符串高亮显示

-c 只统计符合条件的总行数,不打印匹配结果

-o 只打印匹配到的关键字,不打印整行

-B1 同时打印匹配到结果的前面一行-B(before)

-A1 同时打印匹配到结果的后面一行-A(after)

-C1 同时打印匹配到结果的前后一行-C(context)上下文的意思

-w 只匹配独立的单词,w(word), 比如:grep -w 'the' father是不能匹配出father的, 但是grep the father可以。

-v 反向查找,即查找不包含关键字的行

-e 同时匹配多个关键字,各个关键字之间是“或”的关系, grep -e abc -e eft searchfile; 查询在searchfile中,包含了abc或是包含eft的行。

-q 以静默方式执行,执行结果不会自动输出。同时-q只关心有没有匹配到字符,并不关心有多少条数据匹配到。并且匹配结果需要通过 echo $?才能看到。匹配到了,$?=0; 没匹配到 $?=1.

-E 使用扩展正则表达式匹配,使用该参数时,后面的关键字为扩展正则表达式,不使用此参数时,后面的关键字为基本正则表达式

-P 指定使用perl兼容的正则表达式。(不同开发语言中,正则表达式规则可能略有不同)

除了grep命令,还有egrep,fgrep命令,各有其特点。

  • grep: 支持基本正则表达式

  • egrep: 支持扩展正则表达式,相当于 grep -E

  • fgrep: 不支持正则表达式,只能匹配写死的字符串,但是速度奇快,效率高,fastgrep.