2016-06-14 44 views
2
cat log | awk '/^Jun 14 11:52/,/^Jun 14 11:56/' 

这个工作,它给了我这两个时间戳之间的日志行。awk变量对日期grep不起作用

cat log | awk -v start="$startTime" -v end="$endTime" '/^start/,/^end/'

这不起作用。它返回空。

我使用awk变量的方式有什么问题吗?

回答

6

在正则表达式文字//之间,您不能使用变量。

您可以使用:

awk -v start="$startTime" -v end="$endTime" '$0 ~ "^" start{p=1} p; $0 ~ "^" end{p=0}' log 
+1

就像一个魅力。有没有解释这种用法的文档? – egorulz

+0

这里不会有任何文档,但是在一些在线的awk教程中,他们会显示类似的例子。 – anubhava