首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用bash脚本解析日志文件

使用bash脚本解析日志文件
EN

Stack Overflow用户
提问于 2018-10-11 19:41:37
回答 3查看 934关注 0票数 0

下面是我试图解析的一个日志文件的示例。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
2018-09-09 15:32:28 Alert Server1 Running Check TRIGGERED
+--------------------------------------+---------+
| ID        | host           | altID     | value |
+--------------------------------------+---------+
| 4als4234  | host1.mail.com | isRunning | true  |
| 5nsh3463  | host2.mail.com | isRunning | false |
+--------------------------------------+---------+
Instance: server
Alert ID: server_running

我想有一个脚本,运行和格式的日志如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
host: host1.mail.com 
altID: isRunning
value: true 
Alert ID: server_running

host: host2.mail.com 
altID: isRunning
value: false 
AlertID: server_running

我对linux有一般的了解,我的bash脚本知识有限。我尝试过使用一些awk命令,但是我似乎不能得到正确的格式。有什么建议吗?

EN

回答 3

Stack Overflow用户

发布于 2018-10-11 20:40:10

检查此Perl解决方案:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ cat alert.pl
open $INPUT,"<","$ARGV[0]" or die "No such file";
my $alertid ="";
while(my $row = <$INPUT>)
{
 if ($row=~m/^[|]\s*\d/m)
   {
     my @F = split(/\|/, $row);
     push @ht,"$F[2]";push @alt,"$F[3]";push @val,"$F[4]";
   }
 if ($row=~m/^Alert/m)
   {
     ($alertid = $row)=~s/(.*):(.*)/\2/g;
   }
}
foreach my $id (0..1)
{
print "host:$ht[$id]\n" ;
print "altID:$alt[$id]\n" ;
print "value:$val[$id]\n" ;
print "AlertID:${alertid}\n" ;
}
$ perl -f alert.pl alert.log  // Calling the perl script
host: host1.mail.com
altID: isRunning
value: true
AlertID: server_running

host: host2.mail.com
altID: isRunning
value: false
AlertID: server_running
票数 0
EN

Stack Overflow用户

发布于 2018-10-11 20:55:02

使用GNU awk:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gawk '
    /Alert.*TRIGGERED/ {alert_start = NR}
    alert_start && NR == alert_start + 4 { # the first data row of the table
        while (NF == 9) {
            ids[$2]["host"]  = $4
            ids[$2]["altID"] = $6
            ids[$2]["value"] = $8
            getline
        }
    }
    alert_start && /^Alert ID/ {
        for (id in ids)
            printf "host: %s\naltID: %s\nvalue: %s\nAlert ID: %s\n\n",
                ids[id]["host"], ids[id]["altID"], ids[id]["value"], $3
        delete ids
        alert_start = 0
    }
' log.file
票数 0
EN

Stack Overflow用户

发布于 2018-10-12 21:21:10

在一条评论中,您说需求Alert-ID 'server1_running" instead of 4als4234是一个打字错误。

据我所知,在需求中会有一些东西是这样工作的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
grep -E "true|false" inputfile |
   while read -r _ id _ host _ altID _ value _; do
      cat <<@
host: ${host}
altID: ${altID}
value: ${value}
Alert id: ${id}

@
   done

这将给出输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
host: host1.mail.com
altID: isRunning
value: true
Alert id: 4als4234

host: host2.mail.com
altID: isRunning
value: false
Alert id: 5nsh3463
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52767761

复制
相关文章
如何在父进程中读取子(外部)进程的标准输出和标准错误输出结果
        最近接手一个小项目,要求使用谷歌的aapt.exe获取apk软件包中的信息。依稀记得去年年中时,有个同事也问过我如何获取被调用进程的输出结果,当时还研究了一番,只是没有做整理。今天花点时间,将该方法整理成文。(转载请指明出于breaksoftware的csdn博客)
方亮
2019/01/16
3.9K0
subprocess:Python中创建子进程
subprocess库提供了一个API创建子进程并与之通信。这对于运行生产或消费文本的程序尤其有好处,因为这个API支持通过新进行的标准输入和输出通道来回传数据。
luckpunk
2023/09/29
5480
subprocess:Python中创建子进程
如何在 Python 里优雅地读取文件特定行
如果文件非常大,不能读取到内存中,那么你可能会通过for 循环数行数,数到特定行:
青南
2019/09/16
2.3K0
如何在 Python 中读取 .data 文件?
在本文中,我们将学习什么是 .data 文件以及如何在 python 中读取 .data 文件。
很酷的站长
2023/02/22
5.9K0
如何在 Python 中读取 .data 文件?
python读取特定的行
fr = open(filename) for line in fr.readlines():     if line.startswith("#"):         continue     else:         ## do something with line          ## could use fr.readlines()[1:]  from second line import linecache content_list = linecache.getlines(filenam
py3study
2020/01/13
3.9K0
如何在 Python 中启动后台进程?
后台进程是在后台运行的程序或任务,它们不会阻塞主程序的执行,并可以在后台处理一些耗时或周期性的任务。在本文中,我们将探讨如何在Python中启动后台进程,并介绍一些内置模块和第三方库来实现这一目标。
网络技术联盟站
2023/08/03
1.8K0
如何在 Python 中启动后台进程?
如何在 Python 中启动后台进程?
后台进程是在后台运行的程序或任务,它们不会阻塞主程序的执行,并可以在后台处理一些耗时或周期性的任务。在本文中,我们将探讨如何在Python中启动后台进程,并介绍一些内置模块和第三方库来实现这一目标。
网络技术联盟站
2023/07/14
4170
如何在 Python 中启动后台进程?
如何在python中惰性地读取文件?
惰性地读取,就是在读文件的时候,不是直接将整个文件读到内存之中,而是一行一行的读取。这对于读取如网页日志这样的贼大的文件来说,可以减少打开文件的响应时间以及所占用的内存。
灯珑LoGin
2022/10/31
1.8K0
父视图半透明而子视图不半透明
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/50970269
用户1451823
2018/09/13
1.3K0
python readinto直接读取到缓冲区
def read_into_buffer(filename): buf = bytearray(os.path.getsize(filename)) with open(filename, 'rb') as f: f.readinto(buf) return buf
用户5760343
2019/09/30
8810
如何在 Python 中终止 Windows 上运行的进程?
当深入研究Windows操作系统上的Python开发领域时,无疑会出现需要终止正在运行的进程的情况。这种终止背后的动机可能涵盖多种情况,包括无响应、过度资源消耗或仅仅是停止脚本执行的必要性。在这篇综合性的文章中,我们将探讨各种方法来完成使用 Python 终止 Windows 上运行的进程的任务。通过利用“os”模块、“psutil”库和“子流程”模块,我们将为自己配备一个多功能工具包来解决这项势在必行的任务。
很酷的站长
2023/08/11
5840
如何在 Python 中终止 Windows 上运行的进程?
进程中的数据读取和修改
// 获取窗口句柄 HWND hFindWnd = ::FindWindow(NULL, “[窗口标题]”);
ClearSeve
2022/02/16
8580
python 从subprocess运行的子进程中实时获取输出
shell =false 意思是command 使用的不是linux shell指令,如果要用shell 指令如ls 要将false 变成true, 通过指定stderr=subprocess.STDOUT,将子程序的标准错误输出重定向到了标准输出,以使我们可以直接从标准输出中同时获取标准输出和标准错误的信息。 p.poll() 返回子进程的返回值,如果为None 表示 c++子进程还未结束. p.stdout.readline() 从 c++的标准输出里获取一行.
多凡
2020/02/11
10.5K0
最佳实践:巧妙kill CRS进程而不导致主机重启
张大朋(Lunar)Oracle 资深技术专家 Lunar 拥有超过十年的 ORACLE SUPPORT 从业经验,曾经服务于ORACLE ACS部门,现就职于 ORACLE Sales Consultant 部门,负责的产品主要是 Exadata,Golden Gate,Database 等。 我们都知道,在RAC环境中,如果kill ocssd.bin进程,会引起主机重启。 但是有时候系统已经异常了了,且CRS不能正常关闭,而主机可能是几年没重启的老系统,没人敢重启,现在怎么办? 我们只能尝试手
数据和云
2018/03/06
2K0
最佳实践:巧妙kill CRS进程而不导致主机重启
python multiprocess 子进程和主进程同时抛出异常时子进程无法退出
在使用python的multiprocess库时,如果在主进程中的处理子进程的返回函数callback或者处理子进程的错误的函数errorbackerror中抛出异常,则子进程无法退出。 (1)errorcallback中抛出异常
锦小年
2021/12/08
3.1K0
python multiprocess 子进程和主进程同时抛出异常时子进程无法退出
美好“如祺”而至,安全如影随形
昨天,网约车家族又迎来了一个新成员 —— 如祺出行。 这个由广汽与腾讯等合作方联手打造的共享出行产品,将在广州正式推出市场,以粤港澳大湾区为核心逐步向全国推广,计划一年内开拓5个城市,投放近一万辆新能源车型。 腾讯拿出了用户服务和营销、车联网和平台运营、地图和云服务、生态服务和安全五大核心能力,支持如祺出行。安全能力作为其他四大能力的基石,对出行平台的业务发展至关重要。腾讯安全在如祺出行上也拿出了一整套的解决方案,涵盖安全咨询、应用安全、风控安全,从战略视角帮助如祺出行构建全面的安全体系。 那么
腾讯安全
2019/09/16
1.5K0
美好“如祺”而至,安全如影随形
【说站】python如何在word中读取表格内容
word文件看起来很复杂,不方便结构化。事实上,word文档中大概有几种内容:paragraph(段落)、table(表格)、character(字符)。我现在要分析的word文档基本都是段落和表格。本文主要讲述从word中分析表格,并将表格信息结构化的方法。
很酷的站长
2022/11/24
2K0
python读取文件末尾N行
# -*- coding: cp936 -*- import os,sys,re def lastline(): global pos while True: pos = pos - 1 try: f.seek(pos, 2) #从文件末尾开始读 if f.read(1) == '\n': break except: #到达文件第一行,直接读取
py3study
2020/01/13
3.3K0
点击加载更多

相似问题

Jaeger服务未显示在Jaeger UI中

14

在远程主机(而不是本地)上使用烧瓶虚拟主机

25

MS Excel 365:本地主机urls在本地浏览器中打开,而不是弹出对话框

115

PHP文件在浏览器中打开,而不是运行

31

国际化在本地运行,而不是在远程运行

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文