You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取ping命令延迟数值以制作类Linux风格的ping图表?

提取Linux ping命令中的延迟数值

针对你使用的ping -c 1 -i 1 "google.com"命令,以下几种方法可以直接提取出类似86 ms里的延迟数值:

方法1:grep + Perl正则表达式

利用grep的Perl正则模式,精准匹配time=后的数值部分:

ping -c 1 -i 1 google.com | grep -oP 'time=\K[\d.]+'
  • -o只输出匹配的部分,-P启用Perl正则,\K表示忽略前面的time=,只保留后面的数字和小数点(支持小数延迟,比如86.3)。

方法2:sed替换提取

通过sed的字符串替换功能,捕获并提取目标数值:

ping -c 1 -i 1 google.com | sed -n 's/.*time=\([0-9.]\+\) ms.*/\1/p'
  • -n仅输出匹配的行,正则中的\([0-9.]\+\)捕获time=和ms之间的数值,\1引用捕获的内容并输出。

方法3:awk字段分割处理

利用awk分割输出字段,直接定位到包含延迟的字段:

ping -c 1 -i 1 google.com | awk '/time=/ {split($7, arr, "="); print arr[2]}'
  • /time=/匹配包含延迟信息的行,$7是输出中time=xxx ms所在的字段,用split按=分割后,取第二个元素就是延迟数值。

带失败判断的脚本示例

如果需要处理ping失败(如域名解析失败、请求超时)的情况,可以用bash脚本封装:

#!/bin/bash
target="google.com"
ping_output=$(ping -c 1 -i 1 "$target")

if echo "$ping_output" | grep -q "time="; then
    latency=$(echo "$ping_output" | grep -oP 'time=\K[\d.]+')
    echo "到$target的延迟: $latency ms"
else
    echo "ping $target失败: $(echo "$ping_output" | tail -n1)"
fi

内容的提问来源于stack exchange,提问作者Forklift

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 22:02:06