2016-07-22 10 views
0

Hallo, ich möchte die einige Daten aus einer Datei basierend auf der Uhrzeit grep.So, wenn die Zeit übereinstimmt, ich möchte alle bestimmte Zeile aus der Datei in eine neue Datei: unten ist mein Dateiformat:Grep Daten basierend auf der Zeit in Unix

1 - - [22/Jul/2016:07:46:15 -0500] "POST abc HTTP/1.0" 200 679 93071 
1 - - [22/Jul/2016:07:46:16 -0500] "POST abc HTTP/1.0" 200 679 100994 
1 - - [22/Jul/2016:07:46:17 -0500] "POST abc HTTP/1.0" 200 679 102270 
1 - - [22/Jul/2016:07:46:18 -0500] "POST abc HTTP/1.0" 200 679 103008 
1 - - [22/Jul/2016:07:46:19 -0500] "POST abc HTTP/1.0" 200 679 109170 
1 - - [22/Jul/2016:07:46:20 -0500] "POST abc HTTP/1.0" 200 679 101149 
1 - - [22/Jul/2016:07:46:21 -0500] "POST abc HTTP/1.0" 200 679 24796 
1 - - [22/Jul/2016:07:46:22 -0500] "POST abc HTTP/1.0" 200 679 93071 
1 - - [22/Jul/2016:07:46:23 -0500] "POST abc HTTP/1.0" 200 679 100994 
1 - - [22/Jul/2016:07:46:24 -0500] "POST abc HTTP/1.0" 200 679 102270 
1 - - [22/Jul/2016:07:47:25 -0500] "POST abc HTTP/1.0" 200 679 103008 
1 - - [22/Jul/2016:07:47:19 -0500] "POST abc HTTP/1.0" 200 679 109170 
1 - - [22/Jul/2016:07:47:20 -0500] "POST abc HTTP/1.0" 200 679 101149 

Jetzt möchte ich die Werte grep, deren Zeit zwischen 7.46.15 bis 07.47.20

Antwort

1

awk zur Rettung!

$ awk -v p="[22/Jul/2016:" '$4 >= p"07:46:15" && $4 <= p"07:47:20"' file 

1 - - [22/Jul/2016:07:46:15 -0500] "POST abc HTTP/1.0" 200 679 93071 
1 - - [22/Jul/2016:07:46:16 -0500] "POST abc HTTP/1.0" 200 679 100994 
1 - - [22/Jul/2016:07:46:17 -0500] "POST abc HTTP/1.0" 200 679 102270 
1 - - [22/Jul/2016:07:46:18 -0500] "POST abc HTTP/1.0" 200 679 103008 
1 - - [22/Jul/2016:07:46:19 -0500] "POST abc HTTP/1.0" 200 679 109170 
1 - - [22/Jul/2016:07:46:20 -0500] "POST abc HTTP/1.0" 200 679 101149 
1 - - [22/Jul/2016:07:46:21 -0500] "POST abc HTTP/1.0" 200 679 24796 
1 - - [22/Jul/2016:07:46:22 -0500] "POST abc HTTP/1.0" 200 679 93071 
1 - - [22/Jul/2016:07:46:23 -0500] "POST abc HTTP/1.0" 200 679 100994 
1 - - [22/Jul/2016:07:46:24 -0500] "POST abc HTTP/1.0" 200 679 102270 
1 - - [22/Jul/2016:07:47:19 -0500] "POST abc HTTP/1.0" 200 679 109170 
1 - - [22/Jul/2016:07:47:20 -0500] "POST abc HTTP/1.0" 200 679 101149 
2

einfach einen einfachen regulären Ausdruck verwenden:

grep ":07:46:1[5-9]" file 

T seine Spiele sind von 07:46:15 bis zu: 19.

Für Ihre gegebene Eingabe kehrt:

1 - - [22/Jul/2016:07:46:15 -0500] "POST abc HTTP/1.0" 200 679 93071 
1 - - [22/Jul/2016:07:46:16 -0500] "POST abc HTTP/1.0" 200 679 100994 
1 - - [22/Jul/2016:07:46:17 -0500] "POST abc HTTP/1.0" 200 679 102270 
1 - - [22/Jul/2016:07:46:18 -0500] "POST abc HTTP/1.0" 200 679 103008 
1 - - [22/Jul/2016:07:46:19 -0500] "POST abc HTTP/1.0" 200 679 109170 
1 - - [22/Jul/2016:07:46:15 -0500] "POST abc HTTP/1.0" 200 679 101149 
1 - - [22/Jul/2016:07:46:15 -0500] "POST abc HTTP/1.0" 200 679 24796 
+0

wenn die Zeit umziehen: 07: 46: 15 bis: 08: 12: 13, dann wird es nicht – Developer

+1

@Developer arbeitet, dann ist es an der Reihe relevante Daten zur Verfügung zu stellen, zum Beispiel eines [MCVE]. Und prüfen Sie auch [Wie man Protokolle leicht mit awk filtert?] (Http://StackOverflow.com/q/34311140/1983854), wo ich das ziemlich viel abgedeckt habe. – fedorqui

+0

können wir das nicht grep ?? – Developer