Como cortar a saída de 'who -b' para mostrar apenas data e hora

3

Eu quero, por meio de um simples comando no terminal, perguntar ao meu computador quando fiz o último boot do sistema e quero que a resposta apareça em um arquivo de texto com apenas números. Eu usei o comando:

who -b >> file.txt

Isso funcionou, mas diz:

system boot  xxxx-xx-xx xx:xx

Eu só quero que a data e a hora apareçam no arquivo de texto. Alguém sabe como se livrar do texto e apenas deixar os números no arquivo de texto em um simples comando?

    
por Ludvig 12.10.2017 / 11:51

2 respostas

2
who -b | sed 's/.*  //' >> file.txt

funciona para todas as localidades instaladas no meu sistema (veja o teste abaixo), basicamente ele exclui tudo até a última ocorrência de dois caracteres de espaço sucessivos, que devem corresponder ao início do registro de data e hora, independentemente das configurações de localidade.

$ for i in $(locale -a); do printf "%-10s: %s\n" $i "$(LANG=$i who -b | sed 's/.*  //')"; done
C         : Sep 23 20:22
C.UTF-8   : 2017-09-23 20:22
de_AT.utf8: 2017-09-23 20:22
de_BE.utf8: 2017-09-23 20:22
de_CH.utf8: 2017-09-23 20:22
de_DE.utf8: 2017-09-23 20:22
de_LI.utf8: 2017-09-23 20:22
de_LU.utf8: 2017-09-23 20:22
en_AG     : 2017-09-23 20:22
en_AG.utf8: 2017-09-23 20:22
en_AU.utf8: 2017-09-23 20:22
en_BW.utf8: 2017-09-23 20:22
en_CA.utf8: 2017-09-23 20:22
en_DK.utf8: 2017-09-23 20:22
en_GB.utf8: 2017-09-23 20:22
en_HK.utf8: 2017-09-23 20:22
en_IE.utf8: 2017-09-23 20:22
en_IN     : 2017-09-23 20:22
en_IN.utf8: 2017-09-23 20:22
en_NG     : 2017-09-23 20:22
en_NG.utf8: 2017-09-23 20:22
en_NZ.utf8: 2017-09-23 20:22
en_PH.utf8: 2017-09-23 20:22
en_SG.utf8: 2017-09-23 20:22
en_US.utf8: 2017-09-23 20:22
en_ZA.utf8: 2017-09-23 20:22
en_ZM     : 2017-09-23 20:22
en_ZM.utf8: 2017-09-23 20:22
en_ZW.utf8: 2017-09-23 20:22
it_IT.utf8: 2017-09-23 20:22
POSIX     : Sep 23 20:22

Vou deixar minhas outras soluções aqui para referência:

who -b | awk '{print $(NF-1)" "$NF}' >> file.txt

imprimirá as últimas duas colunas (separadas por espaços) da saída do comando, que funciona para uma configuração de localidade como a sua (de acordo com a amostra da sua pergunta).

Para a saída em inglês, você precisa das últimas três colunas :

who -b | awk '{print $(NF-2)" "$(NF-1)" "$(NF)}' >> file.txt
    
por dessert 12.10.2017 / 13:07
0

Aqui está: who -b | cut -c23-40 e também who -b | cut -d' ' -f13,14

Esta é a saída que recebo em ambos os casos é 2017-10-11 07:55 .

    
por mikewhatever 12.10.2017 / 11:56