需求示例:输出日志文件中某一时间段的日志,比如过去某天或某几天的日志,可以日期开始、结束时间作为关键字,获取两者中间的那段日志。

输出文件内容中指定两个关键字之间的内容
sed -n \'1,/AAA/!p\' 11 |sed -n \'1,/BBB/p\'
输出文件11内容中从关键字AAA到BBB之间的内容,可用于获取日志文件中两个时间段之间的文件内容
-n 按行输出,与p结合使用
!p 取反输出

 

需求示例:获取数据库binlog日志中某些sql语句及执行时间,因执行时间在语句之前的两三行,所以需要输出匹配sql语句及之前部分,结合grep -v 筛选掉部分干扰日志,可以干脆利索的获得想要的日志

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

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

grep -C 5 foo file 显示file文件里匹配foo字串那行以及上下5行
 

实践应用:grep -B 3 \"update t_business set \" cdb_bin_mysqlbin.000004.sql |grep -v \"SET T\"|grep -B 3 \"delete_status=1,\"|grep -v \"\\-\\-\" |grep -v \"# at \"|grep -v \"use \\`xx_db\" >111

收藏 打印