2016-06-22 44 views
1

使用Veriables我有一個像輸入文件:AWK - 殼

INFO 2016-06-15 00:10:43.173WMSPackingOrderManager llocatePackingOrderToWorkplaceBoxed -Remaining capacity of workplace WMSPackingWorkplace[428654,PAC_MB_ 104] is -43 
INFO 2016-06-15 00:30:43.173WMSPackingOrderManager llocatePackingOrderToWorkplaceBoxed -Remaining capacity of workplace WMSPackingWorkplace[428654,PAC_MB_ 104] is -43 
INFO 2016-06-15 00:30:43.173WMSPackingOrderManager llocatePackingOrderToWorkplaceBoxed -Remaining capacity of workplace WMSPackingWorkplace[428654,PAC_MB_ 104] is -43 
INFO 2016-06-15 00:30:43.173WMSPackingOrderManager llocatePackingOrderToWorkplaceBoxed -Remaining capacity of workplace WMSPackingWorkplace[428654,PAC_MB_ 104] is -43 
INFO 2016-06-15 00:30:43.173WMSPackingOrderManager llocatePackingOrderToWorkplaceBoxed -Remaining capacity of workplace WMSPackingWorkplace[428654,PAC_MB_ 104] is -43 

目前,我有如下代碼:

cat inputFile.log | awk -v date="2016-06-15" -v startTime="00:10" -v endTime="00:20" '$2" "$3>=from&&$2" "$3<=to' from=date" "startTime to=date" "endTime 

我試圖讓fromto使用提供的變量,但沒有運氣。我試圖用\逃脫特殊字符,但這似乎沒有影響它。

任何和所有的幫助將不勝感激。

+1

沒有必要說'貓文件| awk'...'',因爲'awk'...'file'也是一樣的。 – fedorqui

回答

3

你可以試試這個

cat inputFile.log | awk -v date="2016-06-15" -v startTime="00:10" -v endTime="00:20" 'BEGIN{from=date" "startTime; to=date" "endTime}($2" "$3)>=from && ($2" "$3)<=to' 

awk -v date="2016-06-15" -v startTime="00:10" -v endTime="00:20" 'BEGIN{from=date" "startTime; to=date" "endTime}($2" "$3)>=from && ($2" "$3)<=to' inputFile.log 

不使用cat。由於@Ed莫頓

輸出

INFO 2016-06-15 00:10:43.173WMSPackingOrderManager llocatePackingOrderToWorkplaceBoxed -Remaining capacity of workplace WMSPackingWorkplace[428654,PAC_MB_ 104] is -43 
+0

圖例。奇蹟般有效。 – glly

+0

你能解釋一下'$ 3> = from && $ 2「」$ 3 <= to'' this works? – Inian

+0

''$ 2「」$ 3> = from && $ 2「」$ 3 <= to''這個代碼只是一個字符串比較,它會按字母順序比較字符串,'from'和'to'在'BEGIN'範圍內定義,所以'from =「2016-06-15 00:10」'和'to =「2016-06-15 00:20「'。 – kemiya