代码改变世界

Linux grep常用命令

2018-11-27 19:43  Tanwheey  阅读(2548)  评论(0编辑  收藏  举报

在一个文件中同时查找多个字符串:

并集语法:

grep -e 'pattern1 -e 'pattern2 file

或集语法:

1、grep -E 'pattern1|pattern2' file

2、egrep 'pattern1|pattern2' file

3、grep 'pattern1|pattern2' file

egrep 等同于 grep -E 。它会以扩展的正则表达式的模式来解释模式。下面来自 grep 的帮助页:
基本的正则表达式元字符 ?、+、 {、 |、 ( 和 ) 已经失去了它们原来的意义,要使用的话用反斜线的版本 /?、/+、/{、/|、/( 和 /) 来代替。 传统的 egrep 并不支持 { 元字符,一些 egrep 的实现是以 /{ 替代的,所以一个可移植的脚本应该避免在 grep -E 使用 { 符号,要匹配字面的 { 应该使用 [}]。
GNU grep -E 试图支持传统的用法,如果 { 出在在无效的间隔规范字符串这前,它就会假定 { 不是特殊字符。
例如,grep -E ‘{1′ 命令搜索包含 {1 两个字符的串,而不会报出正则表达式语法错误。
POSIX.2 标准允许这种操作的扩展,但在可移植脚本文件里应该避免这样使用。

在多个文件中同时查找一个或多个字符串:

语法:

grep 'pattern*' file1 file2

例子:
检索日志文件中的cms及"moduleId":6000关键词

##实时查看
$ tail -f /export/Logs/Domains/m.jd.id/server1/logs/catalina.out|grep --color -E 'cms|"moduleId":6000'
##查看所有历史
$ grep --color -E 'cms|"moduleId":6000'
/export/Logs/Domains/m.jd.id/server1/logs/catalina.out

完全匹配关键词

$ grep -w 'cms\|campaign\' /export/Logs/Domains/m.jd.id/server1/logs/catalina.out

使用egrep命令,使用扩展的正则表达式

$ egrep -w 'cms|campaign' /export/Logs/Domains/m.jd.id/server1/logs/catalina.out

使用grep的-e参数关键词

$ grep -e 'cms|campaign' /export/Logs/Domains/m.jd.id/server1/logs/catalina.out

使用-i参数忽略大小写,–color高亮显示匹配结果

$ egrep -wi --color 'cms|campaign' /export/Logs/Domains/m.jd.id/server1/logs/catalina.out

示例输出 

使用-i参数忽略大小写,–color高亮显示匹配结果

$ egrep -wi --color 'cms|campaign' /export/Logs/Domains/m.jd.id/server1/logs/*.out

示例输出 

 

递归查找

# egrep -Rwi --color 'foo|bar' /etc/


------------------------------------------------------Tanwheey-------------------------------------------------------------------------

爱生活,爱工作。