Führende Nullen aus der Datumsausgabe entfernen

40

Ich habe einen Alias ​​für den Datumsbefehl erstellt, um das Datum im folgenden Format anzuzeigen:

2013.06.14.12.10.02

mit diesem Befehl:

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

Alles funktioniert super, außer ich möchte die führenden Nullen aus der Ausgabe entfernen.

Es gibt keine Möglichkeit, dies durch Ändern des Formats zu erreichen. Ich denke, es kann nur durch Weiterleiten der Ausgabe an andere Befehle wie sedund erfolgen awk.

Das Betriebssystem ist Ubuntu 12.04.2 LTS.

easl
quelle
Es gibt keine Hinter Nullen in Ihrem Beispiel (na ja, es sei denn , Sie die Zählung 0in den 10Minuten nach der vollen Stunde, aber das Entfernen , dass Änderungen des Zeitstempels Bedeutung). Ich nehme an , Sie meinen führende Nullen (Nullen am Anfang jedes Datumskomponente), wobei in diesem Fall , wenn Sie eine GNU verwenden Userland @ j883376 Antwort wird wahrscheinlich nützlich sein. Andernfalls geben Sie bitte Ihre Umgebung an (Userland-Tools sind nicht bei allen Unix-ähnlichen Betriebssystemen gleich, und möglicherweise sind nicht einmal alle Tools auf allen solchen Betriebssystemen verfügbar).
CVn
ja, der titel war falsch, obwohl der post korrekt war, entschuldigung für die verwirrung.
Easl
Keine Bange. In der Regel ist es jedoch immer gut, Ihre Umgebung anzugeben. OS X unterscheidet sich von OpenBSD unterscheidet sich von AIX unterscheidet sich von GNU. Wenn Sie Ihre Umgebung angeben, riskieren Sie nicht, Antworten zu erhalten, die für Sie nicht von Nutzen sind (z. B. Antworten, die die Verwendung von Linux / proc vorschlagen, wenn Sie versuchen, ein Problem unter OS X zu lösen).
CVn
2
Nur eine Anmerkung: Beachten Sie, dass das Entfernen von führenden Nullen das Sortieren nach diesen Daten erschwert, falls dies jemals erforderlich sein sollte.
Dubu
Siehe diesen Beitrag: stackoverflow.com/questions/47880412/…
codeforester

Antworten:

74

Gemäß der GNU- dateManpage:

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

   -      (hyphen) do not pad the field

Deshalb können Sie tun

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

und erhalten

2013.6.14.3.19.31
j883376
quelle
Die korrekte Syntax für die Formatierung wurde in stackoverflow.com/questions/29659069/…
user13107 am
4

Fühlt sich albern an, aber da diese Frage mit markiert ist /sed, gibt es hier eine Möglichkeit, dies mit sed zu tun, wie du erwähnt hast :)

alias date='date +"%Y.%m.%d.%H.%M.%S" | sed "s/^0*//g; s/\.0*/./g"'
CoreyJJohnson
quelle