grep(Global search REgular expression and Print out the line.)是一个文本搜索工具,根据用户指定的文本模式(搜索条件)对目标文件进行逐行搜索,显示能匹配到的行。
使用man命令查看grep使用语法格式: grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
其中option为grep命令的选项,pattern为要匹配的简单字符串或携带特殊字符的模式字符串,file为文件列表,可有多个文件。
例如: ls /etc | grep '*p' 查找输入内容中含有字母p
linux针对grep查询结果输入时高亮显示参数设置:alias grep='grep --color=auto'
正则表达式: 是一类字符所书写的模式,其中许多字符不表示其字面意义,而是表达控制或通配等功能; 元字符:不表示其字面意义,而用于额外功能性描述 基本正则表达式的元字符: 1、 字符匹配: .:匹配单个字符 grep 'r..t' /etc/passwd []:匹配指定范围内的任意单个字符 [0-9],[[:digit:]]: 所有数字 [a-z],[[:lower:]]: 所有小写字母 [A-Z],[[:upper:]]: 所有大写字母 [[:space:]] :空白字符 [[:punct:]] :特殊字符,标点符号 [[:alpha:]] :所有大小写字母 [[:alnum:]] :所有数字字母 [^]:取反 2、 次数匹配元字符:用于实现指定其前面的字符所能够出现的次数 *:任意长度,它前面的字符可以出现任意次 例如:x*y xxy,xyy,y, \?:0次或1次,它前面的字符是可有可无的 例如:x\?y xy,y,ay \{m\}:m次,它前面的字符要出现m次 例如:x\{\2}y xy,xxy,y,xxxxy匹配子串 \{m,n\}:至少m次,至多n次 例如:x\{2,5} xy,y,xxy \{m,\}:至少m次 \{0,m\}:至多n次
.*:任意长度的任意字符
工作于贪婪模式:尽可能多的去匹配 3、 位置锚定: ^:行首锚定 写在模式最左侧 $:行尾锚定 写在模式最右侧 ^$: 空白行 grep '^$' /etc/issue | wc -l
不包含特殊字符的连续字符组成的串叫单词: \<:词首,出现于单词左侧,\b \<char \>:词尾,出现于单词右侧,\b char\> \<char\>:前后都锚定
4、分组: \(\) 例如:\(ab\)* 分组中的模式匹配到的内容,可由正则表达式引擎记忆在内存中,
5、引用: 例如\(ab\(x\)y\).*\(mn\) 有编号:自左而右的左括号,以及与其匹配的右括号 \(a\(b\(c\)\)mn\(x\)\).*\1
\#:引用第n个括号所匹配到的内容,而非模式本身
例如: \(ab\?c).*\1 grep命令选项: -v:反向选取 例如: grep -v '^$' /etc/issue -o:仅显示匹配到的字串,而非字串所在的行 -i:ignore-case,忽略字符大小写 -E:支持使用扩展正则表达式 -A # 前一行 -B # 后一行 -C # 显示上下文 --color=auto 将pattern在匹配行中高亮输出 注意: (1).选项区分大小写
(2).多个选项可以一起使用
|