AWK remove uma linha?

1

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?

    
por tamani 05.09.2014 / 14:12

4 respostas

2

Tente:

uptime | awk -F'[, ]' '{print $3,$4}'
    
por 05.09.2014 / 14:43
1

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 $  
    
por 05.09.2014 / 14:15
0

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.

    
por 05.09.2014 / 15:27
0

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.

    
por 15.01.2017 / 13:37

Tags