linux grep命令详解 linux grep命令详解

简介:

  grep( global search regular expression and print out the line : 全面搜索正则表达式并把行打印出来)是一种强大的linux文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

命令格式:

  grep [option] pattern file 

  grep [-acinv] [--color=auto] '搜索的字符串' filename
  选项与参数:
    1. -a : 把binary文以text文件的方式搜索数据。
    2.-c : 计算找到‘搜寻字符串’的次数。
    3.-i : 忽略大小写放入不同,所以大小写视为相同。
    4.-n :顺便输出行号。
    5.-v : 反向选择,亦即显示出没有‘搜索字符串’内容的那一行。
    6.--color = auto : 可以将找到的关键字那部分加上颜色的显示出来。

  根据文件内容递归查找目录:

1 grep ' findContent ' * #在当前目录搜索带有‘findContent’行的文件
2 grep -r ' findContent'  #在当前目录及其子目录下搜索' findContent '行的文件。
3 grep -l -r 'findContent' #在当前目录及其子目录搜索'findContent'行的文件,但是不显示匹配的行,只显示匹配的文件。

grep展示搜索行的前后行信息

   grep -C n foo file 显示file文件里匹配foo字符串的那行及上下n行

   grep  n foo file 显示file文件里匹配foo字符串的那行及上下n行

   grep -B n foo file 显示foo及前5行

   grep -A n foo file 显示foo以及后5行

   查看mysql慢日志中ip地址为192.168.0.10发送过来的SQL语句的后面三行
   1.tail -50 /usr/local/mysql/data/sql-slow.log |grep -3 '192.168.0.10'  

   匹配php错误日志中某一个字段

  2,tail -100 /data/logs/php/php_error_5.3.log  | grep  "Memcache::get()";

    查看某一个文件第5行和第10行

     sed -n '5,10p' filename 这样你就可以只查看文件的第5行到第10行

grep与正则表达式的结合

  1.匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep

  例子: grep -n 't[ae]st' filename.txt  ---->  匹配tast和test,表示我们想要在filename.txt文件中搜索tast和test两个单词,并且输出行号。

  2.^ 表示锚定行的开始,如:'^grep'匹配所有以grep开头的行。

  3.$ 表示锚定行的结束 如:’grep$‘匹配所有以grep结尾的行。

  4. . 匹配一个非换行符的字符,如:'gr.p' 匹配gr后接一个任意字符,然后是p。

  5. * 匹配零个或多个先前字符,如:'g*rep' 匹配所有一个或者多个g字符后紧跟rep的行。

  6. .* 一起用代表任意字符

  7. [^]匹配一个不在指定范围内的字符,如: [^g]oo 搜索有oo的行,但不想要oo前面有g。

使用实例:

  实例1:查找进程

  ps -ef | grep svn

  实例2:查找指定进程个数

  ps -ef | grep svn -c 或者 ps -ef | grep -c svn 

  实例3:从文件中读取关键字进行搜索

  cat test.txt | grep -f test2.txt

  实例5:从文件中查找关键词,并且对关键字加上颜色显示

  grep  'test' --color test.txt

  实例6:从多个文件中查找关键词

  grep 'test' test1.txt test2.txt

  实例7:找出以g开头的行内容

  cat test.txt | grep ^u

  实例8:输出非u开头的行内容

  cat test.txt | grep ^[^u]

  实例9:输出以hat结尾的行内容

  cat test.txt | grep hat$

  实例10:显示包含9或者nine字符的内容行

  cat test.txt | grep -E '9|nine'

公司用法:

  grep '.*三八活动*.' --color /opt/web/dianshangwuxian_t_jzt/wf/logs/emcdsthirdservice.log

原文:

1.http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856896.html 
2.http://www.cnblogs.com/peida/archive/2012/12/17/2821195.html
3.http://www.cnblogs.com/wangkongming/p/3684905.html