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

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

从命令

watch -n1 "ifconfig eth0 | grep GiB"。我给出了以下输出,

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

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

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

在此处输入图片描述

答案1

您不会解析 watch 命令,而是解析 watch 正在运行的任何命令。我改进了您的搜索以匹配 ifconfig 的更大范围的可能输出:

$ ifconfig eth0 | grep -Eo '[0-9\.]+ [PTGMK]i?B'
164.8 GB
142.6 GB

这是通过 grep 的参数实现的,-E它允许更广泛的语法并且-o只输出匹配的字符串。

如果您想要循环执行该操作,那么您可以这样做,但是您必须将其包装在 shell 中,以便正确解释管道:

watch -x sh -c "ifconfig eth0 | grep -Eo '[0-9\.]+ [PTGMK]i?B'"

但在我看来,它并没有那么有用……watch实际上只适合真人看屏幕。如果是这样的话,你就大功告成了,但如果你想定期用这些数字做点什么,你可能用错了工具。

相关内容