Tente:
uptime | awk -F'[, ]' '{print $3,$4}'
Este é o meu tempo de atividade
uptime='uptime|grep days|awk '{print$3,$4}''
Mas agora é exibido: 23 days,
Eu quero remover o ,
no final.
Como posso conseguir isso?
Tente:
uptime | awk -F'[, ]' '{print $3,$4}'
tente
uptime | awk '/days/ { printf "%s%s",$3,substr($4,1,length($4)-1) ; }'
um teste de amostra, o 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 $
Você pode preferir analisar o pseudofile de tempo de atividade diretamente assim:
uptime="$(( 'cat /proc/uptime | cut -f1 -d.' / 86400 )) days"
Se o tempo de atividade for menor que 1 dia, ele exibirá "0 dias" em vez de nada.
O grep
não é necessário, pois o comando uptime
exibe apenas uma linha:
$ uptime
1:15PM up 2 days, 14:04, 1 user, load averages: 1.12, 1.12, 1.08
ou
$ uptime
1:24PM up 8 mins, 1 user, load averages: 1.27, 1.17, 0.62
Supondo que você gostaria de extrair o bit entre a up
a primeira vírgula ( 2 days
ou 8 mins
, respectivamente, nos dois exemplos acima):
$ uptime | sed 's/^.*up \([^,]*\).*$//'
19 mins
O script sed s/^.*up \([^,]*\).*$//
substituirá toda a linha de entrada pela string entre up␣
e a primeira vírgula.
Tags awk