首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于模式的bash文件提取

基于模式的bash文件提取
EN

Stack Overflow用户
提问于 2015-09-25 10:22:31
回答 2查看 236关注 0票数 0

我有一个日志文件,其中包含日期、时间,然后报告每个错误。每个错误都从日期时间模式开始。我在shell脚本中获得一个id作为参数,并希望将带有相应id的错误报告放到一个新文件中。我是新的打击和尝试使用grep和削减,但grep不超过一个字符。另外,逐行读取和搜索键是不可行的,因为id在错误报告后出现2-3行,用于特定id的启动。帮帮我!谢谢。

下面是日志的示例。

代码语言:javascript
复制
    2015-09-25 03:34:40 ................<event>
    <id>xxx</id>
    <msg>.......: ErrorName1 ===
    ............
    ..........
    .....
    </event>

    2015-09-25 03:34:42 .................<event>
    <id>yyy</id>
    <msg>.......: ErrorName2 ===
    ............
    ..........
    .....
    </event>

编辑:所有错误都没有相同的行数,有些事件具有相同的错误id。因此,如果我请求特定的错误id,所有这些具有相同错误id的事件都应该放在不同的文件中。

EN

回答 2

Stack Overflow用户

发布于 2015-09-25 11:04:29

不知道你是不是真的在“分裂”这个文件。根据你的描述,你试图提取其中的一部分给出一些身份。如果您的每个事件都有相同的行数(如示例数据中的行数),那么您将很好地处理:

代码语言:javascript
复制
<your_file grep -B 1 -A 5 '<id>your_id</id>'

其中-A n表示匹配前的n行a-B n表示匹配前的n行b

票数 0
EN

Stack Overflow用户

发布于 2015-09-25 12:03:47

awk可以帮忙。

代码语言:javascript
复制
awk '{if ($0~/"<event>"/)k=1;if (k==1)print $0;if ($0~/"</event>"/)k=0}' inputfile > outputfile
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32780089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档