AWKを使用して特定の時間をミリ秒に変換する

AWKを使用して特定の時間をミリ秒に変換する

データを含むファイルがあります。

[15:29:58.496640]
[15:29:58.496644]
[15:29:58.496665]
[15:29:58.496682]
[15:29:58.497096]
[15:29:58.498621]

CentOSでミリ秒単位で出力を使用したいですawk

たとえば、

15:29:58.496640 -> 1499421598.496

試したコード:

awk '{gsub(/[][]/,"");a=$1;x="'"`date -d a +'%s.%3N'`"'"; print x" " a}' file

ベストアンサー1

を使用して開くかっこと閉じ括弧をトリミングtrし、実際にはawk次のように非常に簡単に計算を実行できます。

$ tr -d '[]' < input | awk -F: '{secs=$3; secs+=$2*60; secs+=$1*60*60; printf "%.3f\n", secs*1000 }'
55798496.640
55798496.644
55798496.665
55798496.682
55798497.096
55798498.621

入力と出力を表示するには(中括弧を再追加する)、単にステートメントを拡張するだけですprintf

$ tr -d '[]' < input | awk -F: '{secs=$3; secs+=$2*60; secs+=$1*60*60; printf "[%s]\t%.3f\n", $0,secs*1000 }'
[15:29:58.496640]   55798496.640
[15:29:58.496644]   55798496.644
[15:29:58.496665]   55798496.665
[15:29:58.496682]   55798496.682
[15:29:58.497096]   55798497.096
[15:29:58.498621]   55798498.621

おすすめ記事