如何解析 watch 命令输出的最后 5 位数字?

如何解析 watch 命令输出的最后 5 位数字?

从命令

watch -n1 "ifconfig eth0 | grep GiB"

我给出了下面的输出。

现在我只想要 (GiB) 之前的最后 5 位数字。我为此编写了一个正则表达式,它似乎工作

(\d{1,4})(?!.*\d)\sGiB

唯一的问题是我无法使用上面显示的命令?我正在使用 ubuntu,有什么帮助吗

在此处输入图片描述

答案1

如果服务器重新启动或非常繁忙,您的测试将会中断:ifconfig根据传输的数据量来缩放其使用的单位。例如,我管理的服务器有以下内容:

RX bytes:8697322454215 (7.9 TiB)  TX bytes:2151364718288 (1.9 TiB)

您可能会发现查看 的内容更容易/proc/net/dev,这是ifconfig它的数据来源。其内容如下所示

Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
  eth0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
    lo: 1204278   13020    0    0    0     0          0         0  1204278   13020    0    0    0     0       0          0
 wlan0: 658883131  568453    0    0    0     0          0         0 56092206  420036    0    0    0     0       0          0

答案2

尝试 sed:

| sed 's/.*(\([0-9.]*\s\)GiB)\s.*/\1/'

相关内容