2017-09-28 82 views
-1

我的日誌目錄(文件位於不同的子目錄中)中有多個文件模式爲「* .tps(例如:tps-20170307170421560-1053.tps)」。在多個文件中查找特定屬性的最大值

文件中的條目如下。我想要提取所有文件中最高的endtime值。

「結束時間:1488902691462」

項文件

{"endTime":1488902691462,"startTime":1488902691462,"operationIdentity":"publishCacheStatistics","name":"murex.limits.utilities.cache.statistics.CacheStatisticsTimerTask","context":{"parentContext":{"id":-1,"parentContext":null},"data":[{"value":"GlobalRuleCache:Util_Algos_Ctp_Notional_Bar:ValidationRuleRepository","key":"name"},{"value":"0","key":"hits"},{"value":"0","key":"misses"},{"value":"0","key":"count"},{"value":"0","key":"maxElements"},{"value":"0","key":"evictions"},{"value":"Default","key":"policy"}],"id":0}} 
{"endTime":1488902691471,"startTime":1488902691471,"operationIdentity":"publishCacheStatistics","name":"murex.limits.utilities.cache.statistics.CacheStatisticsTimerTask","context":{"parentContext":{"id":-1,"parentContext":null},"data":[{"value":"GlobalRuleCache:Diff_Bar_No_Engine:ValidationRuleRepository","key":"name"},{"value":"0","key":"hits"},{"value":"0","key":"misses"},{"value":"0","key":"count"},{"value":"0","key":"maxElements"},{"value":"0","key":"evictions"},{"value":"Default","key":"policy"}],"id":9}} 
+0

... 1462甚至不是樣本數據中的最大值。 「最高」是指「最小」? –

回答

1

能否請您嘗試以下,讓我知道,如果這可以幫助你。我已經用GNU awk嘗試過了。

awk -v RS=':|,' '/endTime/{getline;val=val>$0?val:$0} END{print val}' Input_file 

說明:製作記錄分隔符爲:OR,然後訣竅是在一條線上搜索字符串結束時間,如果它開創它然後使用函數getline(將跳轉到下一行),現在這裏如果val的檢查如果它的值不是以前的值,那麼值就會保持不變,否則將其替換爲新的值。最後打印val的值。

+0

downvoter,請你讓我知道-ve的原因嗎?想請求你讓我知道。 – RavinderSingh13

+2

我測試了你的回覆,它在Ubuntu上完美運行。聰明的方式。我upvoted,不知道爲什麼會有人downvote。 –

+1

@MatiasBarrios,感謝隊友的鼓勵,不斷學習,不斷分享。 – RavinderSingh13

0

由於您的數據看起來像JSON,使用解析它們:

shopt -s globstar 
jq -r .endTime **.tps | sort -n | head -1 

那得到最小值。如果你想最大使用tail -1

+0

日誌是簡單的文本文件。 –

+0

是true,但簡單的文本文件包含JSON格式的數據。 –

+0

好的謝謝,但在bash腳本中尋找一些東西。我以前忘記提及。 –

0

這一個爲我工作。

find . -name '*.tps' -exec sed '/endTime/!d; s/{//; s/,.*//' {} + | sort -r | head -1 
相關問題