Linux下最强大的搜索命令grep

576 阅读1分钟
原文链接: amberno1111.github.io

Abstrac

一般查看线上日志的时候,只用lesshead等命令是不够的,日志上堆积的长度不是一行一行浏览可以搞定的,有必要通过一些搜索命令来辅助,快速的从日中找到对应的问题。多数情况下,都需要lessgrep结合并配合管道符来分页输出需要在屏幕上显示的内容。

grep命令

grep(global search regular expression and print out the line),是一种支持正则表达式对文本进行搜索的工具,它会把搜索到的内容打印到屏幕上。

命令格式:

grep [-acinv] [--color=auto] '搜寻字符串' filename
-a:将binary文件以text文件的方式搜寻数据
-c:计算找到'搜寻字符串'的次数
-i:忽略大小写
-n:顺便输出行号
-v:反向选择,即输出没有'搜索字符串'的内容
--color=auto:可以将找到的关键词部分加上颜色显示
-A 5:可以显示前面5行加上查找行的信息
-B 5:可以显示后面5行加上查找行的信息
-C 5:可以显示前后5行加上查找行的信息

一般来说,看日志时候采用的查找命令组合:less xxx.log | grep -i -n -C10 --color=auto xxx

举几个例子:

// 将日志中的abc的行打印到屏幕上
grep abc /opt/jetty/logs/log_  
cat /opt/jetty/logs/log_ | grep abc
less /opt/jetty/logs.log_ | grep abc

grep命令结合正则表达式

如果想要搜寻`abc`与`adc`这两个单词时,可以这样来搜寻:
less /opt/jetty/logs/log_ | grep -n 'a[bd]c'
搜索所有包含一个或多个`a`的行
less /opt/jetty/logs/log_ | grep -n 'a+'