Suppression des zéros non significatifs de la sortie de date


40

J'ai créé un alias de la commande date pour afficher la date au format suivant:

2013.06.14.12.10.02

en utilisant cette commande:

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

Tout fonctionne très bien, sauf que je veux supprimer les zéros de la sortie.

Il n'y a aucun moyen d'y arriver en modifiant le format. Je pense que cela ne peut être fait qu'en envoyant la sortie à d’autres commandes telles que sedet awk.

Le système d'exploitation que j'utilise est Ubuntu 12.04.2 LTS.


Il n'y a pas de zéros à la fin de votre exemple (à moins que vous ne comptiez le nombre 0de 10minutes après l'heure, mais le fait de changer cela change le sens de l'horodatage). Je suppose que vous entendez des zéros au début (zéros au début de chaque composant de date), auquel cas, si vous utilisez une réponse GNU userland @ j883376, la réponse sera probablement utile. Sinon, veuillez spécifier votre environnement (les outils utilisateur ne sont pas les mêmes dans tous les systèmes d'exploitation de type Unix et même tous les outils peuvent ne pas être disponibles sur tous ces systèmes d'exploitation).
un CVn

oui, le titre était faux, mais le post était correct, désolé de la confusion.
easl

Pas de soucis. En règle générale, cependant, il est toujours bon de spécifier votre environnement. OS X est différent d'OpenBSD est différent d'AIX est différent de GNU. En spécifiant votre environnement, vous ne risquez pas d'obtenir des réponses qui ne vous seront d'aucune utilité (comme, par exemple, des réponses suggérant d'utiliser / proc de Linux lorsque vous essayez de résoudre un problème sous OS X).
un CVn

2
Juste une remarque: sachez que la suppression des zéros à gauche rend plus difficile le tri selon ces dates, le cas échéant.
Dubu

Réponses:


74

Selon la datepage de manuel GNU :

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

   -      (hyphen) do not pad the field

Donc tu peux faire

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

et recevoir

2013.6.14.3.19.31

La syntaxe correcte pour le formatage a été trouvée dans stackoverflow.com/questions/29659069/…
user13107

4

/sedJe me sens idiot, mais comme cette question est balisée , voici une façon de faire cela avec sed, comme vous l'avez mentionné :)

alias date='date +"%Y.%m.%d.%H.%M.%S" | sed "s/^0*//g; s/\.0*/./g"'
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.