我有应用程序日志,我需要打印与执行时间超过10000毫秒的所有行的状态。在下面的示例中,只打印第一行,因为第2行不会超过10k毫秒,第3行不显示任何执行时间。AWK打印行基于列
SERVICE_NAME: | API: GetContents | 20160927000511741 | EXECUTION TIME: 10130(ms)
SERVICE_NAME: | API: GetContentsExtend | 20160927000511741 | EXECUTION TIME: 22(ms)
SERVICE_NAME: | API: GetContentsExtended | 20160927000511741 | Current TN: -15698724705531331
我可以做多个步骤在一个文件中
店执行值做到这一点:
cat logfile.log | grep "EXECUTION TIME:" | awk '{print $NF}' | cut -d "(" -f1 | awk '{if ($1>9999) print $1}' >> input.txt
循环通过这个输入文件遍历相同的日志
cat input.txt | while read line
do
cat logfile.log | grep $line"(ms)" >> output.txt
done
灿这可以通过一个命令来完成吗?什么让我很困难的是执行时间值后有(毫秒)。
说明明显,如果阈值变化的说法,而不是1,234 1,000然后用正则表达式匹配的是不是一个伟大的方式VS数值比较。 –