找到grep行后如何添加内容?

时间:2015-12-26 22:09:18

标签: bash shell command-line grep newline

我希望每次ping特定服务器时都会发生故障。

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

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

提前致谢。我希望我很快得到答案。 :)

也欢迎每个人使用x-mas!

2 个答案:

答案 0 :(得分:2)

看看它是否适合你:

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

答案 1 :(得分:0)

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

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