タイムスタンプ付きのテキストファイルを処理し、毎秒最後の行を出力します。

タイムスタンプ付きのテキストファイルを処理し、毎秒最後の行を出力します。

"YYYY-MM-DDTHH:MM:SS.fffffffffZ"一部のデータに続く形式のナノ秒解像度タイムスタンプを含むcsvファイルがあります。

2021-04-26T09:30:04.786235633Z,102 
2021-04-26T09:30:04.786235633Z,524 
2021-04-26T09:30:04.786235633Z,566 
2021-04-26T09:30:04.791050014Z,391 
2021-04-26T09:30:09.882687589Z,922 
2021-04-26T09:30:09.886405549Z,744 
2021-04-26T09:30:09.886405549Z,702 
2021-04-26T09:30:14.986237837Z,436 
2021-04-26T09:30:14.986237837Z,636 
2021-04-26T09:30:14.986298532Z,353 
2021-04-26T09:30:14.986298532Z,445 
2021-04-26T09:30:14.986298532Z,785 
2021-04-26T09:30:14.986298532Z,917 
2021-04-26T09:30:20.086229659Z,195 
2021-04-26T09:30:20.086229659Z,228 
2021-04-26T09:30:20.086229659Z,486 
2021-04-26T09:30:20.086229659Z,41 
2021-04-26T09:30:20.086229659Z,421 
2021-04-26T09:30:20.090214746Z,386 
2021-04-26T09:30:25.186477272Z,678 
2021-04-26T09:30:25.186477272Z,198 
2021-04-26T09:30:25.190264104Z,459 
2021-04-26T09:30:25.190460283Z,123 
2021-04-26T09:30:25.190460283Z,318 
2021-04-26T09:30:26.442994013Z,200 

そんな風に扱いたいです。1秒あたりの最後の行出力は次のとおりです。

2021-04-26T09:30:04.791050014Z,391 
2021-04-26T09:30:09.886405549Z,702 
2021-04-26T09:30:14.986298532Z,917 
2021-04-26T09:30:20.090214746Z,386 
2021-04-26T09:30:25.190460283Z,318 
2021-04-26T09:30:26.442994013Z,200 

awkなどのツールを使用してこれを実行できますか?

ベストアンサー1

GNUを使用すると、sort次のことができます。

<file.csv sort -r | sort -suk1,1.19

つまり、sort結果を逆順に並べ替えますが、最初の19文字だけを考慮してサブ秒を無視し(固有の場合)、最初の文字(古い新しい文字と安定した文字のために大きい文字になる-u)の順序を選択します。 )同じ19文字のキーを持つものです。sort-s

また、最初の行の前の行部分をソートキーとして選択する-k1,1.19こともできます。-t. -k1,1.

入力ファイルがすでに時系列でソートされている場合は、最初のファイルを(または一部のシステムでは)sort置き換えることができます。tactail -r

おすすめ記事