【发布时间】:2016-09-22 17:44:54
【问题描述】:
我需要一个 grep 命令的帮助:
grep match-word tomcat-0.log.* | grep "TOMCAT BENCH" | grep -v Normal
当前输出类似于:
tomcat-0.log:TOMCAT BENCH: match_word random-text 1420 elapsed Thu 2016-09-22 06:31:04:928 PDT <SessionID: id> <RequestID: reqId>
我想修改它以仅显示经过值大于3000等数字的那些行
单词elapsed 始终存在,数字是单词before elapsed。
您能否修改grep 命令以过滤前一个单词并将其与数字进行比较?
【问题讨论】:
-
我认为
awk更适合这种任务...... -
虽然
awk解决方案更干净,但如果您有兴趣,我给您提供了grep解决方案。 :) -
我无法使用 awk,因为日志被压缩了,我实际上是先使用 zgrep 解压缩它
-
只需使用
zcat file | awk。当您需要不同的阈值时,其他任何修改都会变得异常复杂。 -
@amitmah:您应该提到过有问题的压缩文件。同样正如@Ed 正确建议您使用
zcat和awk一样,使用多个grep不仅效率低下,而且不是进行数值比较的正确工具。
标签: regex linux shell awk grep