gpt4 book ai didi

linux - 使用 grep 和 awk 过滤 ping 结果完全不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:47:25 28 4
gpt4 key购买 nike

我想将只有延迟时间的 ping 输出通过管道传输到文本。当我这样做的时候,我得到了预期的结果

ping somesite 
PING somesite (220.181.57.217) 56(84) bytes of data.
64 bytes from 220.181.57.217: icmp_seq=1 ttl=52 time=43.4 ms
64 bytes from 220.181.57.217: icmp_seq=2 ttl=52 time=43.7 ms
64 bytes from 220.181.57.217: icmp_seq=3 ttl=52 time=43.4 ms

然后我这样做

ping somesite | awk -F '[:=]'  '{print $5}'

43.3 ms
43.2 ms
43.3 ms
43.2 ms
43.2 ms
43.1 ms
43.1 ms
43.3 ms
43.2 ms
43.6 ms
43.3 ms
43.3 ms

所以第一行是空白的,然后我想我必须先把它去掉。

ping somesite | grep -v "PING" | awk -F '[:=]'  '{print $5}'

但是没有任何输出。当我这样做时

ping somesite | grep -v "PING"

 ping somesite | awk -F '[:=]'  '{print $5}'

它会起作用的。放在一起的时候。它不会。我想知道这是为什么。

最佳答案

当使用 grep 进行管道传输时,您没有得到任何输出 由于 grep 命令中的 block 缓冲

您可以让 grep 使用行缓冲,以便获取每一行的输出:

ping google.com | grep --line-buffered -v "PING" | awk -F '[:=]' '{print $5}'

但是您不需要grep,因为您可以使用单个awk 来完成此操作:

ping google.com | awk -F '[:=]' 'NR>1{print $5}'

关于linux - 使用 grep 和 awk 过滤 ping 结果完全不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41162250/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com