1.简介

grep命令是一种命令行实用程序,用于在纯文本数据集中搜索与正则表达式匹配的行。通过find命令可以在/bin命令下找到grep命令的可执行程序。
grep命令的全称是"Globally search for a regular expression and print matching lines" 从中可以看到grep命令几个特点:1)globel 全文件搜索。这是因为在Unix、Unix-like系统中为了要彻底搜索一个文件,有的用户在要搜索的字符串前加上前缀 global。2)regular expression 正则表达式匹配。3)matching lines 按行匹配。4)print 打印信息。
grep还有变体程序egrep、fgrep、rgrep,它们的作用分别与grep -E、grep -F、grep -r相同。

命令使用格式

1)grep [OPTIONS] PATTERN [FILE...]
2)grep [OPTIONS] -e PATTERN ... [FILE...]
3)grep [OPTIONS] -f FILE ... [FILE...]

2.常用命令

OPTION    DESCRIPTION    FUNCTION
-n    line number    显示行号
-E    extended-regexp    使用拓展正则表达式规则
-F    fixed-strings    不使用正则表达式规则
-i    ignore-case    无视大小写
-c    count    只显示匹配总数,不显示匹配行号
-w    word-regexp    把pattern作为一个单词匹配
-v    invert-match    反向匹配,匹配结果为不包含匹配文本的所有行
-l    –files-with-matches    列出包含匹配项的文件名
-L    files-without-match    列出不包含匹配项的文件名

3.正则表达式基本命令

.   代表且只能代表任意一个字符(不包括空行)
*   重复前面任意0个或多个字符
.*   匹配所有字符。(包括空行)

+   重复一个或一个以上前面的字符
? 复0个或一个0前面的字符

^   表示以什么开头,^bqh 以bqh开头
$   是以什么结尾
^$   表示空行。
\ 例\.   就只代表点本身,转义符号,让有着特殊身份移动的字符,脱掉马甲,还原原型\$
^.*   以任意多个字符开头。
.*$   以任意多个字符结尾。
(.*)   从第一字符匹配,到空格停止,
[abc]   匹配字符集合内的任意一个字符【a-zA-Z】
[^abc]   匹配不包括^后的任意字符的内容;中括号里的^为取反,注意和以...开头区别。
a\{n,m\}   重复n到m次,前一个重复的字符。如果有用egrep/sed -r 可以去掉斜线。
\{n,\}   重复至少n次,前一个重复的字符。如果有用egrep/sed -r 可以去掉斜线。
\{n\}   重复n次,前一个重复的字符。如果有用egrep/sed -r 可以去掉斜线。

|   用或的方式查找多个符合的字符串
()  找出“用户组”字符串