AWKから行を削除しますか?

AWKから行を削除しますか?

私の稼働時間です

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コマンドはuptime1行しか表示されないため、必要ありません。

$ 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 days8 mins

$ uptime | sed 's/^.*up \([^,]*\).*$/\1/'
19 mins

sedスクリプトは、入力行全体を最初のカンマ間s/^.*up \([^,]*\).*$/\1/の文字列に置き換えます。up␣

関連情報