2016-07-22 53 views
0

您好我想grep基于时间的文件的一些数据。所以如果时间匹配我想从文件中获取所有特定的行到一个新的文件: 以下是我的文件格式:基于unix的时间grep数据

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 

现在我想给grep,其时间是7时46分15秒7时47分20秒之间

回答

1

awk来救援!

$ 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

只使用一个简单的正则表达式的值:

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

T他的比赛从07:46:15到19:

了给定的输入返回:

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

如果时间得到改变:07:46:15:08:12:13那么它将无法工作 – Developer

+1

@Developer然后轮到你提供相关的数据,例如[MCVE。还请检查[如何使用awk轻松过滤日志?](http://stackoverflow.com/q/34311140/1983854),我在这里介绍了这一点。 – fedorqui

+0

我们不能做这个grep吗? – Developer