Linux系统中grep命令可以根据指定的字符串或者正则表达式对文件内容进行匹配查找。在Linux文件处理和SHELL编程中使用广泛。

grep基本语法

用法: grep [选项] "字符串/基本正则表达式" [文件]

常用选项

-c 只输出匹配行的计数。
-i 不区分大小写(只适用于单字符)。
-h 查询多文件时不显示文件名。
-l 查询多文件时只输出包含匹配字符的文件名。
-n 显示匹配行及行号。
-s 不显示不存在或无匹配文本的错误信息。
-v 显示不包含匹配文本的所有行。
-q 不显示存在或者匹配的文本信息
-f 后接文件名,以文件中的每一行作为匹配项
-R 递归查询当前目录下的文件
-w 匹配单词
-o 只输出匹配字符串
-A 输出匹配行的后n行,后带数字,如-A
-B 输出匹配行的前n行,后带数字,如-B
-C 输出匹配行的前后n行,后带数字,如-C

特别说明

1、对于匹配的字符串或者正则表达式需要注意,对于字符串,建议使用双引号,比如"test"、"test test"、"$VAR"等。对于正则表达式,建议使用单引号,比如'[0-9]*test'、'^[0-9]'等

2、文件。可以使用文件全名,比如test.unl、student.txt等,也可以使用模式匹配,比如*表示所有文件、*.unl表示查找所有以.unl后缀的文件,Test*.unl表示以Test开头并以.unl结尾的文件等。

grep常用实例

1、查找包含oracle字符串的行

grep "oracle" /etc/passwd #区分大小写查找带oracle字符串的行
grep -i "oracle" /etc/passwd #不区分大小写查找带oracle字符串的行
grep -ni "oracle" /etc/passwd #不区分大小写查找带oracle字符串的行并显示行号
grep -i '^oracle:' /etc/passwd #查找以oracle:开头用的行

2、统计字符串oracle出现的次数

grep -c "oracle" /etc/passwd

3、显示当前目录下包含字符串"192.168.0.1"的文件名

grep -l "192.168.0.1" * #在当前目录下查找包含192.168.0.1的文件,不包括子目录下文件。*表示查找当前目录下的所有文件
grep -il "192.168.0.1" * #忽略大小写查找包含192.168.0.1的文件,不包括子目录下的文件
grep -ilR "192.168.0.1" * #递归查找当前目录及子目录下包含192.168.0.1的文件

4、去除空行展示文件内容

grep -v '^$' /etc/passwd

5、判断系统是否创建oracle用户。通常用于SHELL编程中判断存在的文件中是否包含字符串,会根据$?返回的结果码进行判断。如下

方法一

grep -q "^oracle:" /etc/passwd #不会输出内容
[ $? -eq ] && echo "Created" || echo "Not Created"

方法二

grep -s "^oracle:" /etc/passwd #不会输出内容
[ $? -ne ] && echo "Created" || echo "Not Created"

6、多个条件查询文件

grep -E 'root|oracle|ftp' /etc/passwd

如果条件过多 ,用上述方法比较繁琐。可以将匹配条件写入一个文件,利用参数-f进行匹配。如果加上-v就标识不匹配

grep -f match.txt  /etc/passwd

可以利用这个参数对两个文件内容做交集、差集的操作。

grep -f text1.txt text2.txt
grep -v text1.txt text2.txt

7、精确匹配"oracle"单词的行

grep -w "oracle" oracle.txt
grep "\boracle\b" oracle.txt

8、显示匹配行的前2行、后2行或者前后2行

grep -A2 'oracle' /etc/passwd #显示匹配行及后2行(After)
grep -B2 'oracle' /etc/passwd #显示匹配行及前2行(Before)
grep -C2 'oracle' /etc/passwd #显示匹配行及前、后2行

9、查找以ksh结束的行

grep 'ksh$' /etc/passwd

10、从动态刷新的文件中查找并输出匹配关键字的行

tail -f debug.log | grep  --line-buffered 'ERROR'

11、排除指定目录递归查找包含'192.168.0.1'的文件

grep -R --exclude-dir=log "192.168.0.1" . 

12、匹配到的关键字显色输出。

grep -i --color=auto 'root' /etc/passwd

grep与正则表达式实例

1、查找包含oracle或者Oracle所在的行

grep '[Oo]racle' /etc/passwd #只要包含就列出
grep '^[Oo]racle' /etc/passwd #开头包含的才列出

2、查找oracle后跟2个字符的行

grep 'oracle..' /etc/passwd #oracle后跟2个任意字符
grep 'oracle[0-9][0-9]' /etc/passwd #oracle后跟2个数字
grep 'oracle[0-9]\{2\}' /etc/passwd #oracle后跟2个数字
grep 'oracle[0-9]\{2,5\}' /etc/passwd #oracle后跟2个到5个数字
grep 'oracle[0-9]\{2,\}' /etc/passwd #oracle后跟2个以上数字(包括2个)

grep与其他命令结合实例

1、查询oracle相关进程

ps -ef | grep "ora_" | grep -v grep

2、 查找ORACLE目录是的审计文件并删除

find $ORACLE_BASE -name "*.aud" -print0 | xargs - rm -f
find $ORACLE_BASE -name "*.aud" -exec rm -f {} \;

3、查找包含192.168.0.1字符串的*.cfg配置文件

find . -name "*.cfg" |xargs grep -l "192.168.0.1"

4、替换*.cfg配置文件中192.168.0.1为192.168.1.1

find . -name "*.cfg" |xargs sed -i 's#192.168.0.1#192.168.1.1#g'

Linux grep命令使用方法的更多相关文章

  1. 如何使用Unix/Linux grep命令——磨刀不误砍柴工系列

     http://man.linuxde.net/grep ---------------------------------------------------- 如何使用Unix/Linux gre ...

  2. linux grep命令总结

    风生水起善战者,求之于势,不责于人,故能择人而任势. 博客园    首页    新随笔    联系    订阅    管理 posts - 791,  comments - 394,  trackba ...

  3. Linux 常用命令使用方法大搜刮

    Linux 常用命令使用方法大搜刮 1.# 表示权限用户(如:root),$ 表示普通用户  开机提示:Login:输入用户名  password:输入口令   用户是系统注册用户成功登陆后,可以进入 ...

  4. linux grep命令

    linux grep命令1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressio ...

  5. linux grep命令详解

    linux grep命令详解 简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来 ...

  6. Linux grep命令详解[备份]

    linux grep命令 1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressi ...

  7. linux grep命令(linux在文件中搜索内容)

    转自:https://www.cnblogs.com/end/archive/2012/02/21/2360965.html linux grep命令 1.作用Linux系统中grep命令是一种强大的 ...

  8. linux grep 命令

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达 ...

  9. Linux grep 命令中的正则表达式详解

    在 Linux .类 Unix 系统中我该如何使用 Grep 命令的正则表达式呢? Linux 附带有 GNU grep 命令工具,它支持扩展正则表达式(extended regular expres ...

随机推荐

  1. IBM MQ 中 amqsput : command not found的解决办法

    MQ操作队列的命令有如下三条:命令功能1.amqsput   将消息放入队列中, 程序把之后的每一行标准输入作为一条独立的消息,读到 EOF 或空行时退出.注意,UNIX 上的 EOF 为 Ctrl+ ...

  2. Blob下载文件 & 模拟滚动条实现

    1.vue切换路由视图时,事件钩子顺序是 当前模块create-->上一个模块beforeDestroy-->当前模块mounted 因此注册全局事件(比如给window注册事件)应放在m ...

  3. CentOS的文件属性:命令 ls -l

    第一列:有11位 1)第一位表示文件类型 1)l表示链接文件 2)d表示目录 3)-普通文件 4)b块设备  磁盘分区就是这种类型 5)c 串行端口设备文件(字符设备文件),比如键盘,鼠标,打印机,t ...

  4. cordova 常用操作

    #创建插件 plugman create --name MyMath --plugin_id SimpleMath --plugin_version #进入插件目录 cd MyMath #plugin ...

  5. 本地IP,掩码,网关,DNS设置

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. solr学习之域的管理与中文分析器配置

    该文使用  Centos6.5 64 位    solr4.10.3   IK-Analyzer中文分析器 一.solr域 在solr中域的概念与lucene中域的概念相同,数据库的一条记录或者一个文 ...

  7. day3(第一周)周末作业

    1.创建字符串变量的三种写法及其区别# 代码:单引号 ''# 双引号 ""# 多引号 ''' '''# 区别:单引号和双引号没有任何区别,一般用于单行字符:多行字符用多引号.## ...

  8. tkinter pyqt同时呈现两个窗口

  9. 开源 人脸识别 openface 实用介绍 实例演示 训练自己的模型

    1.OpenFace 是 卡耐基梅陇(CMU)大学的一个图像+机器学习项目,整体程序包含:人脸发现,特征提取,特征神经网络训练,人脸识别这四部分. github   https://github.co ...

  10. yum-cron更新 CentOS yum update 不升级内核版本方法

    http://www.360doc.com/content/15/0608/17/15798950_476597844.shtml 相关yum-cron说明有一些 CentOS yum update ...