Saya baru mengenal shell scripting. Inti dari skrip saya adalah menemukan perbedaan antara dua cap waktu hingga milidetik. Dengan saya, saya punya file dengan isi cap waktu hanya sebagai
2012-09-13 15:00:29,290 2012-09-13 15:00:29,297
2012-09-13 15:00:29,428 2012-09-13 15:00:29,447
Seperti ini, saya memiliki sekitar 30k catatan, di mana saya seharusnya tidak menghadapi masalah kinerja ketika saya menjalankan skrip. Banyak faktor seperti tahun kabisat, bulan dengan 31 hari dll muncul ketika saya mencoba menulis skrip untuk ini.
Adakah yang bisa membantu saya dalam hal ini?
text-processing
date
timestamps
Vamshi G
sumber
sumber
Jawaban:
Tidak perlu melakukan parsing yang kompleks, teman kencan akan melakukan semua keajaiban untuk Anda, dengan bantuan temannya, bash :
KELUARAN
Lihat
man date
CATATAN
date -d
sangat berguna, itu mengkonversi cap waktu%s
adalah zaman waktu (detik sejak 01-01-1970)%N
adalah nanodetik$(( ))
dan(( ))
untukbash
aritmatika, lihat http://mywiki.wooledge.org/ArithmeticExpression$( )
berdiri untukcommand substitution
Apakah ini sesuai dengan kebutuhan Anda juga?
sumber
Bahasa scripting seperti Perl, Python atau Ruby akan cepat dan membutuhkan sedikit usaha. Misalnya, dengan Perl dan Tanggal :: Parse :
(Untuk setiap baris, ganti
,
dengan.
, pisahkan garis menjadi kata$_[0]
- kata$_[3]
, parsing tanggal yang dibentuk oleh dua kata pertama dan berikutnya, dan cetak perbedaannya.)sumber
Saya baru saja menemukan posting ini, ada - setidaknya hari ini -
date
solusi berbasis sederhana . Menggunakan kerangka kerja dalam jawaban @Gilles Quenot (akan menulis komentar untuk servernya, tetapi tidak cukup reputasi):Hasil:
Menggunakan
%3N
bukan%N
akan memotong output menjadi milidetik.sumber