如何使用awk比較時間。我一直在嘗試使用下面的方法,但失敗。awk無法與定義值進行比較
只要「延遲」超過值「24:00:00」,就應打印下面文件中的第4列。但在我的情況下,只有2717:33:54正在印刷。所有行應該打印的地方。
bash-4.2$ cat test
Source Destination State Lag Status
Data1 Test:/data1 Complted 1239:30:37 Quiescing
Data2 Test:/data2 Complted 1239:30:13 Idle
Data3 Test:/data3 Complted 1208:37:21 Idle
Data4 Test:/data4 Complted 1208:36:46 Idle
Data5 Test:/data5 Complted 1239:29:41 Idle
Data6 Test:/data6 Complted 1239:29:26 Idle
Data7 Test:/data7 Complted 1239:28:52 Idle
Data8 Test:/data8 Complted 2717:33:54 Quiescing
threhold=24:00:00
cat test | awk -v threshold=$threshold '$4 > threshold'
Source Destination State Lag Status
Data8 Test:/data8 Complted 2717:33:54 Quiescing
@jaypal在代碼段中存在變量名的錯字。分配線上的'threhold'。這改變了我輸出的結果,當我糾正它的時候。這就是說,我不知道awk如何比較這些領域。我很想猜。推測是字符串長度,然後是位置字符值。它不會做的**是按照時間計算它們。 – 2014-09-23 17:50:15
@EtanReisner啊,我只是複製粘貼。 – 2014-09-23 17:53:46
'awk'不是特別適合使用日期/時間結構 - 它將字段視爲字符串,而不是您理解它們的區間;因此,它正在進行詞典(即字典順序)比較。您可能想要嘗試使用'python'或'perl'來獲得更好的日期/時間處理功能。 – twalberg 2014-09-23 17:58:35