Loại bỏ các số 0 hàng đầu khỏi đầu ra ngày


40

Tôi đã tạo một bí danh của lệnh date để hiển thị ngày theo định dạng sau:

2013,06.12.12.10.02

sử dụng lệnh này:

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

Tất cả mọi thứ hoạt động tuyệt vời, ngoại trừ tôi muốn loại bỏ các số 0 hàng đầu khỏi đầu ra.

Không có cách nào để làm cho nó xảy ra bằng cách thay đổi định dạng. Tôi nghĩ rằng nó chỉ có thể được thực hiện bằng cách chuyển đầu ra tới các lệnh khác như sedawk.

Hệ điều hành tôi đang chạy là Ubuntu 12.04.2 LTS.


Không có trailing zero trong ví dụ của bạn (tốt, trừ khi bạn đếm 0trong 10phút quá khứ giờ, nhưng loại bỏ những thay đổi nghĩa của timestamp). Tôi hiểu ý bạn là số 0 đứng đầu (số 0 ở đầu mỗi thành phần ngày), trong trường hợp đó nếu bạn đang sử dụng câu trả lời của GNU userland @ j883376 sẽ có ích. Mặt khác, vui lòng chỉ định môi trường của bạn (các công cụ người dùng không giống nhau trong tất cả các HĐH giống Unix và thậm chí không phải tất cả các công cụ đều có sẵn trên tất cả các HĐH như vậy).
một CVn

vâng, tiêu đề đã sai, mặc dù bài viết đã đúng, xin lỗi vì nhầm lẫn.
dịu

Đừng lo lắng. Tuy nhiên, theo nguyên tắc chung, việc xác định môi trường của bạn luôn luôn tốt. OS X khác với OpenBSD khác với AIX khác với GNU. Bằng cách chỉ định môi trường của bạn, bạn không có nguy cơ nhận được câu trả lời sẽ không hữu dụng với bạn (như, giả sử, câu trả lời gợi ý sử dụng Linux / Proc khi bạn đang cố gắng giải quyết vấn đề trên OS X).
CVn

2
Chỉ là một nhận xét: Hãy lưu ý rằng việc loại bỏ các số 0 đứng đầu khiến việc sắp xếp theo các ngày đó trở nên khó khăn hơn, nếu bạn cần.
Dubu

Câu trả lời:


74

Theo datetrang web GNU :

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

   -      (hyphen) do not pad the field

Do đó bạn có thể làm

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

Và nhận

2013.6.14.3.19.31

Cú pháp đúng cho định dạng đã được tìm thấy trong stackoverflow.com/questions/29659069/ từ
user13107

4

Cảm thấy ngớ ngẩn, nhưng vì câu hỏi này được gắn thẻ /sed, đây là một cách để làm điều này với sed, như bạn đã đề cập :)

alias date='date +"%Y.%m.%d.%H.%M.%S" | sed "s/^0*//g; s/\.0*/./g"'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.