[英]How can I manipulate a specific output in Bash (uptime)?
因此,不久前我一直在尝试使用Bash,我想操纵“运行时间”命令的输出。 例如,如果正常运行时间为5分钟,我设法将x分钟的输出更改为0:05,但是其余的一切消失了。
在不影响我的当前正常运行时间输出的情况下,我应该使用哪种方法来显示时间,用户数量及其平均负载。
这是所需的输出:21:08:13向上0:10,3个用户,平均负载:0.30、0.30、0.25
任何帮助,将不胜感激!
since="`uptime --since`"
start="`date --date "$since" '+%s'`"
now="`date '+%s'`"
sec=$((now-start))
days=$((sec/(60*60*24)))
sec=$((sec-days*(60*60*24)))
hr=$((sec/(60*60)))
sec=$((sec-hr*(60*60)))
min=$((sec/60))
sec=$((sec-min*60))
rest="$(uptime | perl -npe'{s/(.*,\s+)(\d+\s+user)/$2/}')"
printf "%d(days), %02d:%02d:%02d(hms), %s\n" $days $hr $min $sec "$rest"
电流输出
0(days), 00:34:00(hms), 3 users, load average: 0.09, 0.14, 0.14
这可能是一种只使用正常运行时间,日期以及当然bash的方式:
#!/bin/bash
since="`uptime --since`"
start="`date --date "$since" '+%s'`"
now="`date '+%s'`"
sec=$((now-start))
days=$((sec/(60*60*24)))
sec=$((sec-days*(60*60*24)))
hr=$((sec/(60*60)))
sec=$((sec-hr*(60*60)))
min=$((sec/60))
sec=$((sec-min*60))
printf "%d(days), %02d:%02d:%02d(hms)\n" $days $hr $min $sec
使用您的输出到名为date的文件中,我尝试了此操作:
cat date | awk '{print $1 " " $2 " " 0 ":" $3 "," $5 " " $6 " " $7 " " $8 " " $9 " " $10 " " $11}'
21:08:13 up 0:10,4 users, load average: 0.30, 0.30, 0.25
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.