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 可以去掉斜线。
| 用或的方式查找多个符合的字符串
() 找出“用户组”字符串