Linux学习笔记(九)——grep与正则表达式

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:]  标点符号