这是我的正常运行时间
uptime=`uptime|grep days|awk '{print$3,$4}'`
但现在显示:23 days,
我想删除,
最后的。
我怎样才能做到这一点?
答案1
尝试:
uptime | awk -F'[, ]' '{print $3,$4}'
答案2
尝试
uptime | awk '/days/ { printf "%s%s",$3,substr($4,1,length($4)-1) ; }'
示例测试,ubuntu 14.04.1,
mybox $ uptime
14:36:13 up 2 days, 23:41, 2 users, load average: 0,17, 0,18, 0,14
mybox $ x=$(uptime | awk '/days/ { printf "%s%s",$3,substr($4,1,length($4)-1) ; }' )
mybox $ echo $x
2days
mybox $
答案3
您可能更喜欢直接解析正常运行时间伪文件,如下所示:
uptime="$(( `cat /proc/uptime | cut -f1 -d.` / 86400 )) days"
如果正常运行时间少于 1 天,它将显示“0 天”而不是不显示任何内容。
答案4
不需要grep
,因为该uptime
命令仅显示一行:
$ uptime
1:15PM up 2 days, 14:04, 1 user, load averages: 1.12, 1.12, 1.08
或者
$ uptime
1:24PM up 8 mins, 1 user, load averages: 1.27, 1.17, 0.62
假设您想提取up
第一个逗号之间的位(2 days
或8 mins
分别在上面的两个示例中):
$ uptime | sed 's/^.*up \([^,]*\).*$/\1/'
19 mins
sed 脚本将用第一个逗号s/^.*up \([^,]*\).*$/\1/
之间的字符串替换整个输入行。up␣