2016-06-14 40 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