Removendo zeros à esquerda da saída da data


40

Fiz um alias do comando date para exibir a data no seguinte formato:

2013.06.14.12.10.02

usando este comando:

alias date = date +"%Y.%m.%d.%H.%M.%S"

Tudo funciona muito bem, exceto que eu quero remover os zeros à esquerda da saída.

Não há como fazer isso alterando o formato. Eu acho que isso pode ser feito apenas canalizando a saída para outros comandos como sede awk.

O SO que estou executando é o Ubuntu 12.04.2 LTS.


Não há zeros à direita no seu exemplo (bem, a menos que você conte 0os 10minutos passados ​​da hora, mas remover isso altera o significado do registro de data e hora). Suponho que você queira dizer zeros à esquerda (zeros no início de cada componente de data); nesse caso, se você estiver usando um usuário do GNU, a resposta de @ j883376 provavelmente será útil. Caso contrário, especifique seu ambiente (as ferramentas do usuário não são as mesmas em todos os sistemas operacionais semelhantes ao Unix, e nem todas as ferramentas podem estar disponíveis em todos os sistemas operacionais).
um CVn

sim, o título estava errado, embora a postagem estivesse correta, desculpe-me pela confusão.
EASL

Não se preocupe. Como regra geral, porém, é sempre bom especificar seu ambiente. OS X é diferente do OpenBSD é diferente do AIX é diferente do GNU. Ao especificar seu ambiente, você não corre o risco de obter respostas que não serão úteis para você (como, por exemplo, respostas sugerindo o uso do Linux / proc quando você está tentando resolver um problema no OS X).
a CVn 14/06

2
Apenas uma observação: esteja ciente de que a remoção de zeros à esquerda torna mais difícil classificar por essas datas, se você precisar.
Dubu

Respostas:


74

De acordo com a página de datemanual do GNU :

   By default, date  pads  numeric  fields  with  zeroes.   The  following
   optional flags may follow '%':

   -      (hyphen) do not pad the field

Portanto você pode fazer

alias date="date '+%Y.%-m.%-d.%-H.%-M.%-S'"

e receber

2013.6.14.3.19.31

A sintaxe correta para a formatação foi encontrada em stackoverflow.com/questions/29659069/…
user13107

4

Parece bobagem, mas como essa pergunta está marcada /sed, aqui está uma maneira de fazer isso com o sed, como você mencionou :)

alias date='date +"%Y.%m.%d.%H.%M.%S" | sed "s/^0*//g; s/\.0*/./g"'
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.