【问题标题】:Grep "DOWN" states in a log file and add a variable on to the line在日志文件中grep“DOWN”状态并将变量添加到该行
【发布时间】:2015-08-02 21:35:28
【问题描述】:

我在日志文件中有这样的表。我正在寻找一种方法来找出某些行并在其后面添加一个与我的服务器有关的句子,该服务器在我的 unix 框中。那可能吗 ?

如果我使用这个命令,我可以得到我桌子上的所有 DOWN “grep DOWN 文件”现在我还想要它所在的 mdserver。我的第一个想法是使用 grep 中的 -B 开关来执行此操作。但是,这不会起作用,因为 mdserver* 不能在“DOWN”项目上方的某些行中出现。有什么建议么 ?谢谢你。

我在日志文件中的表

mdserver10
Corn    UP  0   0 
Bacon   UP  54  0 
Water   DOWN    0   0 
Fries   UP  746     0 
Turkey  UP  0   
mdserver11
Water   DOWN    0   0 
Fries   UP  746     0 
Turkey  UP  0    
mdserver12
Corn    DOWN    0   0 
Bacon   UP  54  0 
Water   UP  0   0 
Fries   UP  746     0 

我的预期结果。

Water   DOWN    0   0 is down on mdserver10
Water   DOWN    0   0 is down on mdserver11
Corn    DOWN    0   0 is down on mdnserver12

</table><table border="1" style="width:300px">mdserver10 </tr>
<tr><td style="width:310px"> Water     </td><td bgcolor ="red"> DOWN   </td><td style="width:50px"> 0            </td><td style="width:50px">  </tr>          </td></tr>

【问题讨论】:

    标签: unix awk sed grep


    【解决方案1】:
    $ awk 'NF==1{srvr=$0; next} /DOWN/{print $0, "is down on", srvr}' file
    Water   DOWN    0   0 is down on mdserver10
    Water   DOWN    0   0 is down on mdserver11
    Corn    DOWN    0   0 is down on mdserver12
    

    【讨论】:

    • 它适用于我的示例瞬间,但不适用于我的实际生产示例,因为我在行中也有 html 代码。有没有办法编辑该代码,使其适用于这些行?谢谢你。我在我的问题中添加了这些行。
    • 我的意思是我想要整行 "mdserver10 " 以便创建用于报告的表格.不只是 mdserver10。我认为同样的情况也适用,但似乎不是......
    • 我不知道你是说你的输入包含 HTML 还是你希望 HTML 出现在你的输出中或两者兼而有之,我不知道你的输出是否应该是纯文本表然后是您展示的 HTML 或其他内容。请编辑您的问题,以提供清晰、准确、真正具有代表性的输入和相关输出。
    猜你喜欢
    • 1970-01-01
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多