Eliminar los ceros iniciales de la salida de fecha


40

Hice un alias del comando de fecha para mostrar la fecha en el siguiente formato:

2013.06.14.12.10.02

usando este comando:

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

Todo funciona muy bien, excepto que quiero eliminar los ceros iniciales de la salida.

No hay forma de hacerlo cambiando el formato. Creo que solo se puede hacer canalizando la salida a otros comandos como sedy awk.

El sistema operativo que estoy ejecutando es Ubuntu 12.04.2 LTS.


No hay ceros finales en su ejemplo (bueno, a menos que cuente 0los 10minutos pasados ​​la hora, pero eliminando eso cambia el significado de la marca de tiempo). Supongo que quiere decir que llevan ceros (ceros al comienzo de cada componente de fecha), en cuyo caso si usted está usando un espacio de usuario de GNU respuesta de @ j883376 probablemente será útil. De lo contrario, especifique su entorno (las herramientas de usuario no son las mismas en todos los sistemas operativos tipo Unix, y ni siquiera todas las herramientas podrían estar disponibles en todos esos sistemas operativos).
un CVn

Sí, el título era incorrecto, aunque la publicación era correcta, perdón por la confusión.
easl

Sin preocupaciones. Sin embargo, como regla general, siempre es bueno especificar su entorno. OS X es diferente de OpenBSD es diferente de AIX es diferente de GNU. Al especificar su entorno, no se arriesga a obtener respuestas que no le serán de ninguna utilidad (como, por ejemplo, respuestas que sugieren usar Linux / proc cuando intenta resolver un problema en OS X).
un CVn

2
Solo un comentario: tenga en cuenta que eliminar ceros a la izquierda hace que sea más difícil ordenar por esas fechas, si alguna vez lo necesita.
Dubu

Respuestas:


74

Según la página de datemanual de GNU :

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

   -      (hyphen) do not pad the field

Por lo tanto puedes hacer

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

y recibir

2013.6.14.3.19.31

La sintaxis correcta para el formateo se encontró en stackoverflow.com/questions/29659069/…
user13107

4

Se siente tonto, pero como esta pregunta está etiquetada /sed, aquí hay una manera de hacer esto con sed, como lo mencionaste :)

alias date='date +"%Y.%m.%d.%H.%M.%S" | sed "s/^0*//g; s/\.0*/./g"'
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.