您的位置:首页 > 运维架构 > Linux

linux中的grep|egrep|fgrep

2015-09-05 01:25 435 查看
1.grep

grep处理文本时,是以行为单位。
使用命令的形式:grep pattern filename/dirname
重要的选项:
-i 忽略大小写的不同
-o 表示仅显示被模式匹配到的字符串,而不是将整行显示处理
-P grep命令后面的正则表达式RE遵循的是perl语言中的正则表达式规范
-G grep命令后面的正则表达式RE遵循的是shell语言中的正则表达式规范
-v 反向选择
-n 输出匹配行在文本中行号
--color=auto 给匹配的字符串加上颜色
-A num 不仅输出所匹配的行,还要输出匹配行之后的num行
-B num 不仅输出所匹配的行,还要输出匹配行之前的num行
-C num 不仅输出所匹配的行,还要输出匹配行前后的num行
-c grep命令输出不再是被匹配行的内容,而是被匹配行的行数
-r 表示递归子目录中的所有文件,来查找匹配行
-R 与-r一样
-w word 如果目标串中含有word单词,才能匹配上。如果目标串中有word字符串但不是一个独立的单词(前后没空格),那么也是匹配不上的

grep使用举例:
grep -o -P '(?<=ItemsCount:)\d+' apache.log | awk 'BEGIN{sum=0;} {sum=sum+$1} END{print sum/NR}'
注意(?<=ItemsCount:)\d+是符合perl语言中正则表达式规范的RE

2.egrep
egrep即是grep -E,grep默认仅支持基础正则表达式,如果要使用扩展正则表达式,需要使用egrep或grep -E。
例如:egrep ‘abc|xyz’ test.log 可以匹配abc或xyz,但将上述egrep换成grep,那么就表示匹配abc|xyz字符串了。

3.fgrep
fgrep即是grep -F,fgrep不支持基础正则表达式和扩展正则表达式,若pattern中包含了RE字符,则将其解释为普通的字符。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: