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.

facilement
la source
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
Voir cet article: stackoverflow.com/questions/47880412/…
codeforester

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
j883376
la source
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"'
CoreyJJohnson
la source