Sed 高于固定值(包括日期)时打印ping响应时间

Sed 高于固定值(包括日期)时打印ping响应时间,sed,awk,Sed,Awk,我希望有一个运行的ping,在通过阈值时只打印输出。 如果传递此值,还应将日期添加到输出中。 以下是我尝试过的: ping 8.8.8.8 | awk '{split($7,a,"[=.]");if (a[2]>58) print a[2],d}' d="$(date)" ping 8.8.8.8 | awk '{"date"| getline date;split($7,a,"[=.]");if (a[2]>58) print a[2],date}' 这两个问题都是日期未更新。

我希望有一个运行的ping,在通过阈值时只打印输出。
如果传递此值,还应将日期添加到输出中。

以下是我尝试过的:

ping 8.8.8.8 | awk '{split($7,a,"[=.]");if (a[2]>58) print a[2],d}' d="$(date)"
ping 8.8.8.8 | awk '{"date"| getline date;split($7,a,"[=.]");if (a[2]>58) print a[2],date}' 
这两个问题都是
日期
未更新。所有打印日期相同

59 Fri Nov 15 08:55:04 CET 2013
59 Fri Nov 15 08:55:04 CET 2013
59 Fri Nov 15 08:55:04 CET 2013
60 Fri Nov 15 08:55:04 CET 2013
59 Fri Nov 15 08:55:04 CET 2013

我知道这可以用bash脚本解决,但我只是希望在测试行ping时间时有一个简单的命令行。我正在使用OSX Mavericks:

ping 8.8.8.8 | awk -F"[= ]" '{if($10>50) {cmd="date"; cmd | getline dt; close(cmd) ; print $10, dt}}'
这将输出ping线时间>50毫秒

我得到以下示例输出:

51.352 Fri Nov 15 00:33:40 PST 2013
50.519 Fri Nov 15 00:33:42 PST 2013
52.407 Fri Nov 15 00:33:44 PST 2013
50.904 Fri Nov 15 00:33:50 PST 2013
52.864 Fri Nov 15 00:33:54 PST 2013

以下内容适合我。我正在使用OSX Mavericks:

ping 8.8.8.8 | awk -F"[= ]" '{if($10>50) {cmd="date"; cmd | getline dt; close(cmd) ; print $10, dt}}'
这将输出ping线时间>50毫秒

我得到以下示例输出:

51.352 Fri Nov 15 00:33:40 PST 2013
50.519 Fri Nov 15 00:33:42 PST 2013
52.407 Fri Nov 15 00:33:44 PST 2013
50.904 Fri Nov 15 00:33:50 PST 2013
52.864 Fri Nov 15 00:33:54 PST 2013
当你说:

ping 8.8.8.8 | awk '{split($7,a,"[=.]");if (a[2]>58) print a[2],d}' d="$(date)"
变量
d
只计算一次,因此您将获得附加到输出中所有行的相同时间戳。您可以改为使用作为参数来打印:

ping 8.8.8.8 | awk '{split($7,a,"[=.]");if (a[2]>58) print a[2], strftime()}'
当你说:

ping 8.8.8.8 | awk '{split($7,a,"[=.]");if (a[2]>58) print a[2],d}' d="$(date)"
变量
d
只计算一次,因此您将获得附加到输出中所有行的相同时间戳。您可以改为使用作为参数来打印:

ping 8.8.8.8 | awk '{split($7,a,"[=.]");if (a[2]>58) print a[2], strftime()}'

没有回答我的问题。我想给它贴上时间戳。添加日期。您的解决方案可以写成
awk-F“[=]”“$10>50”
您是对的。我专注于awk中的比较,忘记了日期部分。:)我更新了一个附加日期的方法。您的解决方案有效,但接受了devnul提供的解决方案,因为它只使用了内部函数,但为您的工作提供了积分:)谢谢。但是,strftime()在OSX上的默认shell中不可用。我试过小牛队和山狮队,但没有回答我的问题。我想给它贴上时间戳。添加日期。您的解决方案可以写成
awk-F“[=]”“$10>50”
您是对的。我专注于awk中的比较,忘记了日期部分。:)我更新了一个附加日期的方法。您的解决方案有效,但接受了devnul提供的解决方案,因为它只使用了内部函数,但为您的工作提供了积分:)谢谢。但是,strftime()在OSX上的默认shell中不可用。我试过小牛队和山狮队。