การลบศูนย์นำหน้าออกจากวันที่


40

ฉันสร้างนามแฝงของคำสั่ง date เพื่อแสดงวันที่ในรูปแบบต่อไปนี้:

2013.06.14.12.10.02

ใช้คำสั่งนี้:

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

ทุกอย่างใช้งานได้ดียกเว้นฉันต้องการเอาเลขศูนย์นำออกจากผลลัพธ์

ไม่มีวิธีที่จะทำให้มันเกิดขึ้นได้โดยการเปลี่ยนรูปแบบ ฉันคิดว่ามันสามารถทำได้โดยเฉพาะท่อส่งออกไปยังคำสั่งอื่น ๆ เช่นและsedawk

ระบบปฏิบัติการที่ฉันใช้คือ Ubuntu 12.04.2 LTS


ไม่มีการต่อท้ายเลขศูนย์ในตัวอย่างของคุณ (ดีเว้นแต่คุณจะนับ0ใน10นาทีชั่วโมงที่ผ่านมา แต่เอาว่าการเปลี่ยนแปลงความหมายของการประทับเวลา) ฉันคิดว่าคุณหมายถึงเลขศูนย์นำหน้า (เลขศูนย์ที่จุดเริ่มต้นขององค์ประกอบวันที่) ซึ่งในกรณีนี้หากคุณใช้คำตอบของผู้ใช้ GNU userland @ j883376จะมีประโยชน์ มิฉะนั้นโปรดระบุสภาพแวดล้อมของคุณ (เครื่องมือ userland นั้นไม่เหมือนกันในระบบปฏิบัติการ Unix ที่เหมือนกันทั้งหมดและอาจไม่มีเครื่องมือทั้งหมดที่ใช้ได้ในระบบปฏิบัติการดังกล่าวทั้งหมด)
CVn

ใช่ชื่อผิดแม้ว่าโพสต์นั้นถูกต้องขอโทษด้วยความสับสน
easl

ไม่ต้องห่วง. ตามกฎทั่วไปแม้ว่าจะเป็นการดีที่จะระบุสภาพแวดล้อมของคุณ OS X แตกต่างจาก OpenBSD แตกต่างจาก AIX ต่างจาก GNU ด้วยการระบุสภาพแวดล้อมของคุณคุณจะไม่เสี่ยงที่จะได้รับคำตอบซึ่งจะไม่มีประโยชน์อะไรกับคุณ (เช่นพูดคำตอบที่แนะนำให้ใช้ Linux / proc เมื่อคุณพยายามที่จะแก้ปัญหาบน OS X)
CVn

2
เพียงหมายเหตุ: โปรดทราบว่าการลบศูนย์นำหน้าทำให้การเรียงลำดับตามวันเหล่านั้นยากขึ้นหากคุณต้องการ
Dubu

ดูโพสต์นี้: stackoverflow.com/questions/47880412/…
codeforester

คำตอบ:


74

ตาม GNU datemanpage:

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

   -      (hyphen) do not pad the field

ดังนั้นคุณสามารถทำได้

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

และรับ

2013.6.14.3.19.31

พบไวยากรณ์ที่ถูกต้องสำหรับการจัดรูปแบบในstackoverflow.com/questions/29659069/…
user13107

4

รู้สึกงี่เง่า แต่เนื่องจากคำถามนี้ถูกแท็กด้วยต่อ/sedไปนี้เป็นวิธีการทำเช่นนี้กับ sed ตามที่คุณพูดถึง :)

alias date='date +"%Y.%m.%d.%H.%M.%S" | sed "s/^0*//g; s/\.0*/./g"'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.