2017-11-23 4 views
0

多くのソースから非常に長いソートされていないログファイルがあり、そのすべての行に書き込まれた時間があります。 時間でログをソートしたいのですが、問題は行内に時間を書き込むための規則がないため、フィルタリングできる行の区切り文字や位置にパターンベースがありません。 私が知っている唯一のものは、時間の書式です:hh:mm:ss。例えば ライン:秒ごとに行を並べ替えます

ファイル名時間

時間

ファイル名、日付、時間

ファイル名例外日時

...

どのようにソート私はでき使用しているファイルこの形式 - 私は行の正確な位置を知らないにもかかわらず?その後、使用、行の先頭にそれを付加、私はあなたが(SS:ミリメートルHHとしてフォーマット)時間を抽出するためにsedを使用することができます

+0

実際の読み取り可能な入力と予想される出力 – RomanPerekhrest

答えて

2

時間、分、秒でそれ痛みにできるようにする必要があります この種のための新しい分野、そして、そのように、カットして、再びそれを削除:

sed 's/\(.*\)\([0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}\)/\2\t\1\2/' data| 
sort -t: -k3,3|cut -f2- 

(これは、秒でソート代わりに数分または数時間でソートする-k2,2または-k1,1に変更します)

+0

あなたの答えは、どのような種類の時間形式を認識することを目指しています... –

+1

@マークセットチェルそれは良い点です!私は入力時のフォーマットについて言及するために投稿を更新しました。ありがとう! – zeppelin

関連する問題