总结些分析日志时会用到的指令。

匹配关键词

  • 匹配单个关键词
#全模糊匹配
grep keyword filename
#单词匹配
grep -w keyword filename
  • 匹配多个关键词
# “与”操作,需要同时包含这几个关键词才会返回
grep keyword1 filename | grep keyword2 | grep keyword3
# “或”操作,包含任意其中一个关键词就会返回
grep -E "keyword1|keyword2|keyword3" fielname
# “非”操作,不包含某个关键词会返回,可以与其他操作结合使用
grep -v keyword3 filename
  • 返回匹配内容前后内容
#After,返回匹配内容与它后面的多少行内容
grep -A number keyword filename
#Before,返回匹配内容与它前面的多少行内容
grep -B number keyword filename
#Context,返回匹配与它前后多少行的内容
grep -C number keyword filename

查看多个日志文件

这个方式也可以用来查看实时写内容的日志文件

tail -f filename1 filename2 filename3 | grep keywords

比如:tail -f demo/*.log demo2/*.log demo3/*.log

查看某个时间段的内容

#按时间查看
sed -n '/beginDateTime/,/endDateTime/p' filename
#按行号查看
sed -n '1,10p' filename

[root@linux ~]# sed [-nefr] [动作]
选项:
-n :使用安静(silent) 模式。在一般sed 的用法中,所有来自STDIN
的资料一般都会被列出到萤幕上。但如果加上-n 参数后,则只有经过
sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在指令列模式上进行sed 的动作编辑;
-f :-f filename 可以执行filename 内的sed 动作;
-r :sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
-i :直接修改读取的档案内容,而不是由萤幕输出。
动作说明: [n1[,n2]]function
n1, n2 :选择进行动作的行数,例如,『10,20[动作行为] 』
function:
a :新增, a 的后面可以接字串,这些字串会在目前的下一行出现。
c :取代, c 的后面可以接字串,这些字串可以取代n1,n2 之间的行。
d :删除, d 后面通常不接任何字串;
i :插入, i 的后面可以接字串,这些字串会在目前的上一行出现;
p :列印,将某个选择的资料印出。通常p 会与参数sed -n 一起运作。
s :取代,s 的动作可以搭配正规表示法。例如1,20s/old/new/g 。