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.


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

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

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"'
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.