İşte bir sed
çözüm:
$ echo ':29.06.2019 23:03:17' | sed 's/^://'
29.06.2019 23:03:17
Komutun sed 's/^://'
yaptığı, her satırın başındaki s
iki nokta karakterini boş dize ile değiştirmek .:
^
//
awk
Alan ayırıcısını ^:
yukarıda açıklandığı gibi değiştirdiğimiz ve ikinci alanı (her satırın) çıktısını verdiğimiz zor bir çözüm :
$ echo ':29.06.2019 23:03:17' | awk -F'^:' '{print $2}'
29.06.2019 23:03:17
Görev de grep
( açıklama ) ile gerçekleştirilebilir , muhtemelen bu büyük miktarda veri için en hızlı çözüm olabilir:
$ echo 'Logfile started :29.06.2019 23:03:17' | grep -Po '^Logfile started :\K.*'
29.06.2019 23:03:17
Veya dosyayı doğrudan sınırlamanın ^
kaldırıldığı aşağıdaki komutla işleyin:
grep -Po 'Logfile started :\K.*' process.log
Yukarıdakiler aynı zamanda sed
ve yakalama grupları tarafından da gerçekleştirilebilir ()->\1
:
sed -nr 's/^.*Logfile started :(.*)$/\1/p' process.log
İfadenin ^.*<something>.*$
, tüm satırı eşleştireceği yer <something>
. Komut s/old/new/
, bu satırı ilk yakalama grubunun içeriğiyle değiştirir (parantez içindeki ifade daha somut olabilir). Bu seçenek -r
, genişletilmiş düzenli ifadeleri etkinleştirir. Seçenek -n
normal çıktısını bastıracak sed
ve son olarak komut p
eşleşmeleri yazdıracaktır.