文档章节

Shell提取日志文件指定关键词之间的段落,且包含指定内容

Jamie-Liu
 Jamie-Liu
发布于 2016/11/11 10:13
字数 268
阅读 758
收藏 1
点赞 0
评论 0

有时候类似于这样的日志:

A

12345

B

A

sadasfd

B

A

12345
asfdsa

B


想要把从A开始,到B结束,中间包含“12345”的段落取出来,得到下面的结果:

A

12345

B


A

12345
asfdsa

B

怎么办呢?请看脚本(脚本中是逐行读取日志文件):

 

#!/bin/bash
start_key="A"    # 段落开始标识
keyword="12345"    # 段落之间包含的关键词
end_key="B"    # 段落结束标识
logfile="/tmp/log.txt"   #  日志文件
filename="/tmp/result.txt"    # 提取内容保存文件
tmpfile="/tmp/tmpfile.txt"   # 临时文件(过渡文件)

rm -f $filename $tmpfile

cat $logfile | while read line
do
    if [ -s "$tmpfile" -a "$line " != "$start_key" ];then
        if [ "$line" != "$end_key" ];then
            echo "$line" >> $tmpfile
        else
            if [ `cat $tmpfile | grep -c "$keyword"` -ne 0 ];then
                cat $tmpfile >> $filename
                echo -e "${end_key}\n" >> $filename
            fi
            rm -f $tmpfile
        fi
    fi
    if [ ! -s "$tmpfile" ];then
        if [ "$line" == "$start_key" ];then
            echo "$line" >> $tmpfile
        fi
    fi
done

 

    脚本运行结果如下:

© 著作权归作者所有

共有 人打赏支持
Jamie-Liu
粉丝 1
博文 16
码字总数 10329
作品 0
宜昌
2-3 搜索引擎工作原理简介

搜索引擎的工作过程大体上可以分成三个阶段: 1、爬行和抓取:搜索引擎蜘蛛通过跟踪链接访问网页,获得页面HTML代码存入数据库。 (1)蜘蛛 搜索引擎用来爬行和访问页面的程序被称为蜘蛛,也...

SEO菲羽 ⋅ 2017/06/21 ⋅ 0

[git学习:Pro git(2)]Git基础

Getting a Git Repository(取得项目的Git仓库) 一在工作目录中初始化新仓库: git init 初始化后,在当前目录下会出现一个名为.git的目录,所有Git需要的数据和资源都存放在这个目录下不过...

SibylY ⋅ 2015/03/08 ⋅ 0

Linux Shell脚本攻略 读书笔记

Linux Shell脚本攻略 读书笔记 这是一本小书,总共253页,但内容却很丰富,书中的示例小巧而实用,对我这样总是在shell门前徘徊的人来说真是如获至宝; 最有价值的当属文本处理,对这块我单独...

小股儿 ⋅ 2014/01/06 ⋅ 0

grep搜索和find搜索

grep搜索和find搜索 ---------------------------- 例子1 查找所有包含str字符串的文件 查找当前目录下以及下辖子目录下所有包含str字符串的文件,会列出文件名.以及该行的内容.以及行号 -n是...

michaelpan ⋅ 2014/04/14 ⋅ 0

了解搜索引擎来进行SEO

搜索引擎的工作的过程非常复杂,而简单的讲搜索引擎的工过程大体可以分成三个阶段。爬行和抓取:搜索引擎蜘蛛通过跟踪链接访问页面,获取页面HTML代码存入数据库。预处理:搜索赢球对抓取来的...

卢松松 ⋅ 2015/11/01 ⋅ 0

每天一个linux命令(45):grep 命令

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是...

姬风 ⋅ 2014/04/08 ⋅ 0

mysql中文进行全文索引支持问题

先来看看对一个字段做全文索引,作为一个数据库系统需要做哪些工作? 假设一个文章表里面包含几个字段:文章id、文章作者、文章标题、文章内容 比如,我们对文章内容这个字段artilce_content...

wangtaotao ⋅ 2014/03/11 ⋅ 0

MapReduce 编程模型在日志分析方面的应用

简介 日志分析往往是商业智能的基础,而日益增长的日志信息条目使得大规模数据处理平台的出现成为必然。MapReduce 处理数据的有效性为日志分析提供了可靠的后盾。 本文将以对访问网页用户的日...

IBMdW ⋅ 2011/05/06 ⋅ 4

Linux下常用命令之sed学习总结

Sed功能说明: Sed是linux下一个强大的文本文件处理工具,通过对文件增加、删除、查找、查询操作,配合正则表达式以实现工作中的各种需求。同时也是一名运维人员必须掌握的核心技能。 ------...

吥洅丿错过 ⋅ 2017/05/04 ⋅ 0

Binwalk:后门(固件)分析利器

近期网络上爆发的厂商固件后门漏洞,如D-LINK 腾达路由器后门时用到的分析工具是Binwalk,最近又更新到最新版本。周五抽空翻译了下工具使用方法和例子。 Binwalk介绍 Binwalk是一个固件的分析...

小编辑 ⋅ 2013/12/02 ⋅ 1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

apollo配置中心的学习笔记

公司现在配置文件太多了,导致配置文件修改起来还是非常麻烦的。在boss(业务运营支撑系统)中,配置文件是存放在jar包的,通过应用jar包来引用配置文件(区分不同环境)。这种方式虽然能够满足...

miaojiangmin ⋅ 4分钟前 ⋅ 0

Jena增删改查AP

插入、更新数据 public static void insert(){ String query = "PREFIX book: <http://www.book.com/jinyong/> \n" + " INSERT DATA \n" + ......

Vincent-Duan ⋅ 4分钟前 ⋅ 0

springMVC之与json数据交互方法

因为我也要返回json数据。所以需要这个注解@ResponseBody,把Java对象转换成json字符串 注意: 1、@RequestBody不能省,因为前台发过来的数据是json数据,得用这个注解去解析该怎么接收这些数...

颖伙虫 ⋅ 8分钟前 ⋅ 0

用实例域代替序号(31)

1、许多枚举天生就与一个单独的int 值相关联 ordinal 方法,返回枚举常量在类型中的数字位置 下述,枚举修改很不方便,不好维护 永远不要根据枚举的序数导出与他相关联的值 而是将他保存在一...

职业搬砖20年 ⋅ 10分钟前 ⋅ 0

并发编程---ConcurrentHashMap源码解析

ConcurrentHashMap是java中为了解决HashMap不能支持高并发而设计的新的实现。 ConcurrentHashMap的类结构 public class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements C......

千古一梦888 ⋅ 13分钟前 ⋅ 0

微服务 WildFly Swarm 简介

我们将看到的最后一个Java微服务框架是一个相对较新的场景,它利用了 JBoss WildFly 应用服务器中已试过且受信任的 JavaEE 功能。WildFly Swarm 是 WildFly 应用服务器的一个完整的拆下来的组...

woshixin ⋅ 18分钟前 ⋅ 0

android apk 瘦身

头条APK瘦身之路 随着版本迭代,功能增加安装包体积也会慢慢增大。 今日头条576版本APK达到了25M,通过一系列的优化,到目前的607版本为12M。本文主要是介绍头条APK瘦身中用到的一些方法。 ...

GoldenVein ⋅ 22分钟前 ⋅ 1

mac机器学习开发环境部署及helloworld

一、下载并安装Anaconda2.7 https://repo.anaconda.com/archive/Anaconda2-5.2.0-MacOSX-x86_64.pkg 路径:/Users/shijun/anaconda2 二、运行Anaconda Navigator -> Environments -> base(ro......

八戒八戒八戒 ⋅ 33分钟前 ⋅ 0

关于日常开发的经验总结(Java),持续更新中

常量尽量使用枚举来表示,这样表现力会很强,因为枚举比一个常量类要有更多的扩展性 方法的入参和出参尽量不要使用Map,因为Map会让调用者感到迷惑,他不知道你里面装的什么,面向对象的开发...

小99 ⋅ 33分钟前 ⋅ 0

IDEA创建SpringMVC+Mybatis+Maven项目

视频如下(加载有点慢请见谅,服务器不太好): 视频

影狼 ⋅ 33分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部