私の稼働時間です
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
1行しか表示されないため、必要ありません。
$ 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
最初のカンマ(または上記の2つの例ではそれぞれ)間up
のビットを抽出するとします。2 days
8 mins
$ uptime | sed 's/^.*up \([^,]*\).*$/\1/'
19 mins
sedスクリプトは、入力行全体を最初のカンマ間s/^.*up \([^,]*\).*$/\1/
の文字列に置き換えます。up␣