2016-06-27 8 views
0

私は以下のログファイルを持っており、そのデータをソートして、指定された開始時刻と終了時刻の間でデータを印刷したいと考えています。日付をソートし、ソートされたデータをUNIXで印刷する方法は?

Logfile: 
[10/04/16 02:07:20 BST] Data 1 
[11/04/16 02:07:20 BST] Data 1 
[10/05/16 04:11:09 BST] Data 2 
[12/05/16 04:11:09 BST] Data 2 
[11/06/16 06:22:35 BST] Data 3 
[12/06/16 06:22:35 BST] Data 3 
[11/07/16 11:07:30 BST] Data 3 
[12/08/16 09:08:07 BST] Data 4 
[22/08/16 09:08:07 BST] Data 4 

私は次のコマンドを使用しています。

sort -n -k 1.5 -k 1.3 -k 1 logfile | sed -n "/[10/04/16 02:07:20 BST]/,/[12/05/16 04:11:09 BST]/p"; 

しかし、ファイル内のすべてのデータを表示していますが、私が言及した終了時には停止したいと考えています。より良い方法がありますか? ありがとうございました。

+0

まず、それはないソート正しくありません。そして 'sed'コマンドで角括弧をエスケープする必要があります。 –

+1

'sort -n -k 1.5 -k 1.3 -k 1 logfile'このコマンドは、入力がソート順でない場合でもソートされた出力を返します。 – Vishwaroopa

答えて

1

括弧と日付部分のスラッシュをエスケープする必要があります。この(私のラップトップ上で動作)を試してみてください。

sort -n -k 1.5 -k 1.3 -k 1 logfile | sed -n "/\[10\/04\/16 02:07:20 BST\]/,/\[12\/05\/16 04:11:09 BST\]/p" 

出力:すべての

[10/04/16 02:07:20 BST] Data 1 
[11/04/16 02:07:20 BST] Data 1 
[10/05/16 04:11:09 BST] Data 2 
[12/05/16 04:11:09 BST] Data 2 
+0

お返事ありがとうございます。正常に動作します。 – Vishwaroopa

関連する問題