私は次のようなファイルを持っていますSample
:-
206,,,206,14.9,0,2012/04/24 00:00:05
206,,,206,14.9,0,2012/04/24 00:00:21
205,,,205,14.9,0,2012/04/24 00:00:23
205,,,205,14.9,0,2012/04/24 00:00:29
207,,,207,14.9,0,2012/04/24 00:00:34
205,,,205,14.9,0,2012/04/24 00:00:40
204,,,204,14.9,0,2012/04/24 00:00:46
202,,,202,14.9,0,2012/04/24 00:00:52
201,,,201,14.9,0,2012/04/24 00:01:00
202,,,202,14.9,0,2012/04/24 00:01:04
そして、次の AWK コマンド:-
awk -F, '{ gsub("/"," ",$7); gsub(":"," ",$7); t+=(mktime($7)-mktime(p)); printf ("%s,%s,%s\n",mktime($7),mktime(p),t); p=$7 }' Sample
次の出力を与える:-
1335222005,-1,1335222006
1335222021,1335222005,1335222022
1335222023,1335222021,1335222024
1335222029,1335222023,1335222030
1335222034,1335222029,1335222035
1335222040,1335222034,1335222041
1335222046,1335222040,1335222047
1335222052,1335222046,1335222053
1335222060,1335222052,1335222061
1335222064,1335222060,1335222065
行ごとに、7 番目の列がエポック日付に変換され、前の行のエポック日付との差が計算されて に追加されt
ます。
は現在日付ではないため、処理中の最初の行でp
、mktime は-1
私の数字を捨てて戻ります。
私がやりたいことは、行 1 が処理されている場合、差が 6 であると仮定して、AWK スクリプトに伝えることです。
私が言いたいのは、t
6 から始めて、2 行目で、前の行とのエポック秒の差を計算し、t
その量だけインクリメントするということです。