Rimozione degli zeri iniziali dall'output della data


40

Ho creato un alias del comando date per visualizzare la data nel seguente formato:

2013.06.14.12.10.02

usando questo comando:

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

Tutto funziona alla grande, tranne che voglio rimuovere gli zero iniziali dall'output.

Non è possibile farlo accadere cambiando il formato. Penso che possa essere fatto solo collegando l'output ad altri comandi come sede awk.

Il sistema operativo in esecuzione è Ubuntu 12.04.2 LTS.


Non ci sono zero finali nel tuo esempio (beh, a meno che non conti 0i 10minuti dopo l'ora, ma rimuovendo ciò cambia il significato del timestamp). Io lo prendo intendi leader zeri (gli zeri all'inizio di ogni componente di data), nel qual caso , se si utilizza un GNU spazio utente risposta di @ j883376 sarà probabilmente utile. Altrimenti, specifica il tuo ambiente (gli strumenti userland non sono gli stessi in tutti i sistemi operativi simili a Unix e nemmeno tutti gli strumenti potrebbero essere disponibili su tutti questi sistemi operativi).
un CVn del

sì, il titolo era sbagliato, sebbene il post fosse corretto, scusate la confusione.
easl

Nessun problema. Come regola generale, tuttavia, è sempre bene specificare il proprio ambiente. OS X è diverso da OpenBSD è diverso da AIX è diverso da GNU. Specificando il tuo ambiente, non rischi di ottenere risposte che non ti saranno utili (come, diciamo, risposte che suggeriscono di usare Linux / proc quando stai cercando di risolvere un problema su OS X).
un CVn

2
Solo un'osservazione: tieni presente che la rimozione degli zeri iniziali rende più difficile l'ordinamento in base a tali date, se mai necessario.
Dubu,

Risposte:


74

Come da datemanpage GNU :

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

   -      (hyphen) do not pad the field

Quindi puoi farlo

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

e ricevere

2013.6.14.3.19.31

La sintassi corretta per la formattazione è stato trovato in stackoverflow.com/questions/29659069/...
user13107

4

Sembra sciocco, ma poiché questa domanda è taggata /sed, ecco un modo per farlo con sed, come hai menzionato :)

alias date='date +"%Y.%m.%d.%H.%M.%S" | sed "s/^0*//g; s/\.0*/./g"'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.