Shell脚本 打印匹配行的上一行

如有这样的访问url日志(access.log),若访问某个url失败了,会打印一行访问失败信息。

http://a.com
WARN 404 access fail
http://b.com
http://c.com
WARN 405 access fail
http://d.com
http://e.com
WARN 500 access fail

现在想得到那些访问失败的url,可以通过如下的脚本来得到:

sed -n '{/access fail/{g;p}};h' access.log

输出为:

http://a.com
http://c.com
http://e.com

解释(来自运维同事):

sed 会逐行处理文件, 首先判断该行是否匹配(或包含)access fail关键字,

若没有匹配,仅执行h,即将该行以覆盖方式放到后台(一个缓冲区);

若匹配上了,则执行后面的命令({g;p}),g表示将后台内容挪到前台来(即将上一行覆盖当前行内容),p打印该行。

分类:工作日志 时间:2015-04-29 人气:108
本文关键词: shell
分享到:

相关文章

iOS 开发

Android 开发

Python 开发

JAVA 开发

开发语言

PHP 开发

Ruby 开发

搜索

前端开发

数据库

开发工具

开放平台

Javascript 开发

.NET 开发

云计算

服务器

Copyright (C) codeweblog.com, All Rights Reserved.

CodeWeblog.com 版权所有 闽ICP备15018612号

processed in 0.040 (s). 12 q(s)