2017-09-28 39 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 
相关问题