दिनांक आउटपुट से अग्रणी शून्य हटा रहा है


40

मैंने निम्न प्रारूप में दिनांक प्रदर्शित करने के लिए दिनांक कमांड का एक उपनाम बनाया:

2013.06.14.12.10.02

इस आदेश का उपयोग कर:

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

सब कुछ बहुत अच्छा काम करता है, सिवाय इसके कि मैं आउटपुट से अग्रणी शून्य को निकालना चाहता हूं।

प्रारूप को बदलकर इसे बनाने का कोई तरीका नहीं है। मुझे लगता है कि यह आउटपुट को अन्य कमांड जैसे sedऔर पर पाइप करके किया जा सकता है awk

मैं जो OS चला रहा हूं वह उबंटू 12.04.2 LTS है।


कोई हैं अनुगामी शून्य अपने उदाहरण में (अच्छी तरह से जब तक आप गिनती, 0में 10, घंटे पिछले मिनट लेकिन दूर करने कि परिवर्तन टाइमस्टैम्प का अर्थ)। मुझे लगता है कि इसका मतलब है कि आप अग्रणी जीरो (प्रत्येक दिनांक घटक की शुरुआत में शून्य), जिस स्थिति में यदि आप एक GNU उपयोगकर्ता का उपयोग कर रहे हैं @ j883376 का उत्तर उपयोगी होगा। अन्यथा, कृपया अपना वातावरण निर्दिष्ट करें (उपयोगकर्ता के सभी टूल यूनिक्स जैसे OSes में समान नहीं हैं, और ऐसे सभी OS पर सभी उपकरण उपलब्ध नहीं भी हो सकते हैं)।
बजे एक CVn

हां, शीर्षक गलत था, हालांकि पोस्ट सही था, भ्रम के लिए खेद है।
चित्रण

कोई चिंता नहीं। एक सामान्य नियम के रूप में, हालांकि, अपने पर्यावरण को निर्दिष्ट करना हमेशा अच्छा होता है। OS X OpenBSD से अलग है, AIX GNU से अलग है। अपने वातावरण को निर्दिष्ट करके, आप उन उत्तरों को प्राप्त करने का जोखिम नहीं उठाते हैं, जो आपके किसी काम के नहीं होंगे (जैसे, कहते हैं, जब आप OS X पर किसी समस्या को हल करने का प्रयास कर रहे हैं, तो Linux / proc का उपयोग करके सुझाव देते हैं)।
एक CVn

2
बस एक टिप्पणी: ध्यान रखें कि अग्रणी शून्य को हटाने से उन तिथियों को क्रमबद्ध करना कठिन हो जाता है, यदि आपको कभी भी आवश्यकता होती है।
डब्यू

इस पोस्ट को देखें: stackoverflow.com/questions/47880412/…
codeforester

जवाबों:


74

प्रति जीएनयू रूप dateमैनपेज:

   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"'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.