grep
grep是Global search regular expression(RE) and Print out the line的缩写,全面搜索匹配正则表达式的内容并输出。
grep家族包括了grep、egrep和fgrep三个命令。其中egrep和fgrep的命令只跟grep有很小的不同。egrep(Extended grep)是grep的扩展,支持更多的正则元字符,而 fgrep(Fixed grep或Fast grep)则把所有的字母都看作单词。
grep [OPTIONS] PATTERN [FILE…]
常用参数
-i 忽略大小写
–color 匹配到的文字高亮显示
-v 显示没有被匹配的行
-o 只显示被匹配到的字符串
正则表达式
默认情况下,grep所使用的正则表达式pattern为BRE(Basic Regular Expression)。因此,只在ERE中定义的元字符需要使用反斜线(\)转义后才能使用,否则会被当做普通的字符来识别。或者直接使用egrep和grep -E来直接使用ERE。
- {} 重复次数
- () 分组
- + 重复一次或多次
- ? 重复零次或多次
另外,与很多变成语言常用的perl字符集不同,Linux下的正则表达式支持POSIX字符集。因为字符集需要放在方括号里才会被识别,因此在使用时需要在外侧再加一层方括号。
POSIX 类 | 描述 |
---|---|
[:alnum:] | 字母和数字 |
[:alpha:] | 字母 |
[:lower:] | 小写字母 |
[:upper:] | 大写字母 |
[:blank:] | 空白字符(空格和制表符) |
[:space:] | 所有空格符(空白字符、换行、回车) |
[:cntrl:] | 不可打印的控制字符(退格、删除、警铃) |
[:digit:] | 十进制数字 |
[:xdigit:] | 十六进制数字 |
[:graph:] | 可打印的非空白字符 |
[:punct:] | 标点符号 |