Menghapus nol terkemuka dari output tanggal

40

Saya membuat alias dari perintah tanggal untuk menampilkan tanggal dalam format berikut:

2013.06.14.12.10.02

menggunakan perintah ini:

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

Semuanya berfungsi dengan baik, kecuali saya ingin menghapus nol terkemuka dari output.

Tidak ada cara untuk mewujudkannya dengan mengubah format. Saya pikir itu bisa dilakukan hanya dengan memipet output ke perintah lain seperti seddan awk.

OS yang saya jalankan adalah Ubuntu 12.04.2 LTS.

mudah
sumber
Tidak ada trailing nol dalam contoh Anda (well, kecuali Anda menghitung 0dalam 10menit melewati jam, tetapi menghapus itu mengubah arti cap waktu). Saya kira maksud Anda nol terkemuka (nol di awal setiap komponen tanggal), dalam hal ini jika Anda menggunakan GNU userland @ j883376 jawaban kemungkinan akan berguna. Jika tidak, harap tentukan lingkungan Anda (alat pengguna darat tidak sama di semua OS mirip Unix, dan bahkan semua alat mungkin tidak tersedia di semua OS semacam itu).
CVn
ya, judulnya salah, meskipun postingannya benar, maaf atas kebingungan.
easl
Jangan khawatir. Namun, sebagai aturan umum, selalu baik untuk menentukan lingkungan Anda. OS X berbeda dari OpenBSD berbeda dari AIX berbeda dari GNU. Dengan menentukan lingkungan Anda, Anda tidak berisiko mengambil jawaban yang tidak akan berguna bagi Anda (seperti, katakanlah, jawaban yang menyarankan menggunakan Linux / proc ketika Anda mencoba menyelesaikan masalah pada OS X).
CVn
2
Hanya sebuah komentar: Sadarilah bahwa menghapus angka nol di depan membuat Anda lebih sulit untuk mengurutkan berdasarkan tanggal tersebut, jika perlu.
Dubu
Lihat posting ini: stackoverflow.com/questions/47880412/…
codeforester

Jawaban:

74

Sesuai halaman datemanual GNU :

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

   -      (hyphen) do not pad the field

Karena itu bisa kamu lakukan

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

dan terima

2013.6.14.3.19.31
j883376
sumber
Sintaks yang benar untuk pemformatan ditemukan di stackoverflow.com/questions/29659069/...
user13107
4

Terasa konyol, tetapi karena pertanyaan ini ditandai /sed, inilah cara untuk melakukan ini dengan sed, seperti yang telah Anda sebutkan :)

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