यहाँ एक sed
समाधान है:
$ echo ':29.06.2019 23:03:17' | sed 's/^://'
29.06.2019 23:03:17
कमांड sed 's/^://'
जो कर रहा है वह खाली स्ट्रिंग के साथ प्रत्येक पंक्ति की शुरुआत से s
बृहदान्त्र वर्ण को प्रतिस्थापित करता है ।:
^
//
यहां एक मुश्किल awk
समाधान है, जहां हम ^:
ऊपर वर्णित क्षेत्र विभाजक को बदल रहे हैं, और दूसरे क्षेत्र (प्रत्येक पंक्ति के) को आउटपुट करते हैं:
$ echo ':29.06.2019 23:03:17' | awk -F'^:' '{print $2}'
29.06.2019 23:03:17
कार्य को grep
( स्पष्टीकरण ) के साथ भी पूरा किया जा सकता है , संभवतः यह बड़ी मात्रा में डेटा के लिए सबसे तेज़ समाधान हो सकता है:
$ echo 'Logfile started :29.06.2019 23:03:17' | grep -Po '^Logfile started :\K.*'
29.06.2019 23:03:17
या फ़ाइल को सीधे निम्न कमांड द्वारा संसाधित करें, जहां सीमा ^
हटा दी गई है:
grep -Po 'Logfile started :\K.*' process.log
उपरोक्त sed
समूहों द्वारा भी प्राप्त किया जा सकता है ()->\1
:
sed -nr 's/^.*Logfile started :(.*)$/\1/p' process.log
जहां अभिव्यक्ति ^.*<something>.*$
पूरी रेखा से मेल खाएगी, जिसमें सम्मिलित है <something>
। कमांड s/old/new/
पहले कैप्चर ग्रुप (ब्रैकेट्स में अभिव्यक्ति अधिक ठोस हो सकती है) की सामग्री द्वारा इस लाइन को स्थानापन्न करेगी। विकल्प -r
विस्तारित नियमित अभिव्यक्ति को सक्षम करता है। विकल्प -n
सामान्य आउटपुट को दबा देगा sed
और अंत में कमांड p
मैचों को प्रिंट करेगा।