文档章节

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

Jamie-Liu
 Jamie-Liu
发布于 2016/11/11 10:13
字数 268
阅读 791
收藏 1

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

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
粉丝 2
博文 18
码字总数 12142
作品 0
宜昌
2-3 搜索引擎工作原理简介

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

SEO菲羽
2017/06/21
0
0
[git学习:Pro git(2)]Git基础

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

SibylY
2015/03/08
91
0
Linux Shell脚本攻略 读书笔记

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

小股儿
2014/01/06
148
0
每天一个linux命令(45):grep 命令

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

姬风
2014/04/08
0
0
mysql中文进行全文索引支持问题

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

wangtaotao
2014/03/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

兄弟连区块链入门教程eth源码分析core-vm源码分析(二)

  兄弟连区块链入门教程eth源码分析core-vm源码分析(二),合约创建 Create 会创建一个新的合约。        // Create creates a new contract using code as deployment cod...

兄弟连区块链入门教程
4分钟前
0
0
python打造特别火的一个小游戏,16行代码实现3D撞球小游戏!

以下是制作上面炫酷动画所需的全部代码: 我们需要三组刚体(当您在Blender的对象上打开一个刚体的属性时,Blender将模拟与其它刚体的碰撞): 1.平面 第2行代码创建了一个简单的平面,立方体...

糖宝lsh
6分钟前
0
0
SQL语言分类

SQL(Structure Query Language)语言是数据库的核心语言。 SQL语言共分为四大类: 数据定义语言DDL,数据操纵语言DML,数据查询语言DQL,数据控制语言DCL。 数据定义语言DDL 数据定义语言DDL...

阿dai
9分钟前
0
0
UICollectionView的headerView、footerView使用以及与UITableView加载headerView、footerView的区别

前序 最近在一家公司实习,学习一些ios的知识。因为以前没有使用过UICollectionView,所以带我的导师让我仿照公司APP中的一个UICollectionView自己做一个练练手。期间遇到了一些问题:我们知...

壹峰
10分钟前
0
0
IMP-00017: following statement failed with ORACLE error 20005:

/*报错信息Export file created by EXPORT:V11.02.00 via conventional pathimport done in AL32UTF8 character set and AL16UTF16 NCHAR character setexport client uses ZHS16GBK char......

fengzhi714
14分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部