【问题标题】:How to add something after a line grep found?如何在找到一行 grep 后添加一些东西?
【发布时间】:2016-04-01 05:59:51
【问题描述】:

我想查看到特定服务器的 ping 何时出现故障。

所以目前我有这样的东西:ping 8.8.8.8 | grep time=11 && date

这会 ping google 并打印 ping 为 11.x 的每一行,这只是用于测试,因此我有一些输出一直不存在,但经常足以让我测试它。然后我有 && 日期,我认为它会在 grep 找到字符串时打印日期。但事实并非如此。所以我现在的问题是我怎样才能得到它,以便在 grep 吐出的每一行中我都可以附加当前时间戳。或者更好的方法是将它作为前缀放在 grep 吐出的每一行前面。这可以通过一个命令实现吗?还是我需要一个简单的 shell 脚本?

提前致谢。我希望我能尽快得到答复。 :)

也祝大家圣诞快乐!

【问题讨论】:

    标签: bash shell command-line grep newline


    【解决方案1】:

    看看它是否适合你:

    ping 8.8.8.8 |  while read line; do echo "$(date): $line"; done | grep time=13
    

    【讨论】:

      【解决方案2】:

      您还可以使用while ! ping ... 示例来检查远程主机何时可用,以防您的8.8.8.8 路径出现故障:

      declare -i cnt=0; while ! ping -c 1 8.8.8.8; do ((cnt++)); echo "test '$cnt' - network down on $(date)"; sleep 60; done
      

      每分钟检查一次主机8.8.8.8是否可用并报告,例如:

      test '10' - network down on Sat Dec 26 16:38:48 CST 2015
      

      一旦网络路径建立,脚本将自行终止。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-30
        • 2013-10-20
        • 2022-09-23
        相关资源
        最近更新 更多