Linux shell之grep
1.什么是grep
Linux grep全称为全局正则表达式打印(global regular expression print),用于查找输入文本中匹配正则表达式的所有行,并写入到标准输出(显示器)。可以说,grep是一个程序家族,它拥有三个实用程序。
(1)grep
标准grep,只支持部分正则表达式。
(2)egrep
扩展的grep,支持大部分正则表达式。
(3)fgrep
快速grep,只支持字符串模式,不支持正则表达式。
2.grep工作原理
为了正确使用grep查找文本,必须首先理解其工作原理,grep对标准输入(文件或者键盘)的每行文本,进行如下操作:
(1)将该行文本读入相应的缓冲区,有时候称为模式空间。
(2)对缓冲区的文本进行正则表达式的比对。
(3)如果匹配,则该行信息从缓冲区处置到标准输出(显示器)。
grep程序将对剩余的文本行重复该3步操作。
3.查找操作
3.1 grep格式
grep 选项正则表达式文件
grep选项:
-c 只打印匹配记数
-i 忽略大小写
-n 打印行编号
-v 打印不匹配行
-x 只打印匹配行
-f 指定存储正则表达式的文件
-s 执行查找,但禁止输出
3.2 正则表达式
grep的不同实用程序,支持的正则表达式模式不同,如下表所示:
-------------------------------------------------------------------------------------------------
| 实用程序 | 原 子 | 运 算 符 |
-------------------------------------------------------------------------------------------------
| grep | 字符、点、类、锚、向后引用 | 序列、重复(除?)、保存 |
-------------------------------------------------------------------------------------------------
| fgrep | 字符 | 序列 |
-------------------------------------------------------------------------------------------------
| egrep | 字符、点、类、锚(^$) | 序列、重复(*?+)、替换、组 |
-------------------------------------------------------------------------------------------------