Linux -grep一般使用

1.基本语法

grep [option] pattern file 

grep [-acinv] [--color=auto] 'key' filename

1) 参数选项:

-n 结果显示行号
-c 关键字匹配的行次数
-i 关键字忽略大小写
-v 反向选择
-e 后跟一个正则表达式
-m10 查找到10次就停止继续查找
-A10 显示关键字所在行和后10行
-B10 显示关键字所在行和前10行
-C10 显示关键字所在行和前后10行
--color=auto 关键字高亮显示(多个参数一起使用,color属性需要放最后,注意是两个短线)

2) grep 可以跟正则,详细信息

grep  -n  t[ea]st info.log       查询test或者tast   ([]一个字符)
grep  -n  [^g]oo                查询oo但不包含goo的行  (^在[]内表示反向选择)
grep  -n  [^a-z]oo              查询oo但不包含小写字母+oo的行 ([a-z] 一个小写字母)
grep  -n  [0-9]         查询包含数字的行  ([0-9] 一个数字)
grep  -n  ^the          查询the开头的行 (^不在[]内表示定位到行首)
grep  -n  ^[^a-zA-Z]        查询不是以字母开头的行 (^反向和定位)
grep  -n  \.$                   查询以.结尾的行 (\转义 $结尾)
grep  -n  ^$                    找出空白行  (^$  空白行)
grep  -n  g..d          查询g??d的字符串的行(.表示一个)
grep  -n  ooo*          查询至少包含两个oo的行(* 表示重复前边一个字符0-n次)
grep  -n  goo*g             查询g开头g结尾且中间至少包含一个o的行
grep  -n  g.*g          查询g开头g结尾且中间字符可有可无的行 (.*表示没有或有任意个字符)
grep  -n  o\{2\}            查询oo的行({2} 前边字符重复2次,{}转义)

 

2.多关键字grep

1) 多条件或

grep -E '关键字1|关键字2|关键字3' info.log

匹配关键字1或关键字2或关键字3到任意一个,展示该行

2) 多条件组合交集

grep '关键字1' info.log | grep '关键字2' | grep '关键字3'  

匹配到关键字1和关键字2和关键字3全部,展示该行

 

3.多文件grep

1) 当前目录下grep文件

grep 'key'  test1.txt test2.txt

2) 当前目录下grep文件夹以及文件夹下所有文件(递归)

grep -r 'key' /ss/*

 

4.demo

   实例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

   grep  -nf -C5 'CN_YAG1004' /*info.log

  实例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'

你可能感兴趣的:(Linux,log)