如何在 grep 找到一行后添加一些东西?

How to add something after a line grep found?

我想看看何时对特定服务器的 ping 中断。

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

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

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

也祝大家圣诞快乐!

看看它是否适合你:

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

您还可以通过使用 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

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