Ini sed
solusinya:
$ echo ':29.06.2019 23:03:17' | sed 's/^://'
29.06.2019 23:03:17
Apa yang dilakukan perintah sed 's/^://'
adalah mengganti s
karakter titik dua :
dari awal ^
setiap baris dengan string kosong //
.
Berikut adalah awk
solusi rumit , tempat kami mengubah pemisah bidang menjadi ^:
, yang dijelaskan di atas, dan menampilkan bidang kedua (dari setiap baris):
$ echo ':29.06.2019 23:03:17' | awk -F'^:' '{print $2}'
29.06.2019 23:03:17
Tugas dapat diselesaikan juga dengan grep
( penjelasan ), mungkin ini bisa menjadi solusi tercepat untuk sejumlah besar data:
$ echo 'Logfile started :29.06.2019 23:03:17' | grep -Po '^Logfile started :\K.*'
29.06.2019 23:03:17
Atau proses file secara langsung dengan perintah berikut, di mana batasan ^
dihapus:
grep -Po 'Logfile started :\K.*' process.log
Hal di atas dapat dicapai juga oleh sed
dan menangkap kelompok ()->\1
:
sed -nr 's/^.*Logfile started :(.*)$/\1/p' process.log
Di mana ekspresi ^.*<something>.*$
akan cocok dengan seluruh baris, yang berisi <something>
. Perintah s/old/new/
akan mengganti baris ini dengan konten dari kelompok tangkapan pertama (ekspresi dalam tanda kurung bisa lebih konkret). Opsi ini -r
memungkinkan ekspresi reguler yang diperluas. Opsi -n
akan menekan output normal sed
dan akhirnya perintah p
akan mencetak yang cocok.