我想要做的是获取命令正常运行时间,并获得平均负载
$ uptime
07:01:30 up 20:29, 2 users, load average: 0.32, 0.39, 0.54
我觉得这是我可以用awk做的事情,但我不太确定如何。 请帮助。
答案 0 :(得分:5)
您可以使用带有反向引用的正则表达式:即查找任何字符序列(。*),但仅限于 average之后的某个点:
uptime | grep -oP '(?<=average:).*'
答案 1 :(得分:3)
您可以使用grep
uptime | grep -o 'load.*'
您还可以通过
分别提取三个平均负载字段uptime | grep -o '[0-9]\+\.[0-9]\+*'
答案 2 :(得分:2)
假设uptime
始终以上述格式输出数据,您可以在:
切换并保留第五组:
$ uptime | cut -d : -f 5
0,24, 0,23, 0,23
答案 3 :(得分:2)
找到解决方案here。
uptime | awk -F'[a-z]:' '{ print $2}'
答案 4 :(得分:2)
你可以用Bash做到这一点。
up=($(uptime))
load_avg=${up[@]: -3}
或者,如果您正在阅读/proc/loadavg
read -a load < /proc/loadavg
load_avg=${load[@]:0:3}
答案 5 :(得分:2)
$ uptime | awk -F': ' '{print $2}'
0.32, 0.39, 0.54
$ uptime | sed 's/.*: //'
0.32, 0.39, 0.54
答案 6 :(得分:0)
假设uptime
将最后一次显示平均负载,则只能保留最后17个字符:
uptime | tail -c 17