regex - grep 命令查找前一个小于数字的单词

标签 regex linux shell awk grep

我需要一个 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 命令以过滤前一个单词并将其与数字进行比较?

最佳答案

使用 gnu awk 这可以在一个命令中完成:

awk '/TOMCAT BENCH/ && !/Normal/ && match($0, / ([0-9]+) elapsed /, a) && a[1] > 3000' tomcat-0.log.*

关于regex - grep 命令查找前一个小于数字的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39645609/

相关文章:

javascript - RegEx - 查找所有用引号括起来的字符串集

javascript - 如何识别正则表达式

linux - 您如何处理 apache 中共享服务器上的带宽计费?

linux - 如何将物理地址用作网络以及 DMA 如何连接到它?

linux - 如何删除 linux 中包含文件和其他目录作为内容的目录

shell - 什么是反向shell?

java - 使用正则表达式验证密码(包含字母和数字以及特殊字符)。{8,}

python - 有没有一种简单的方法可以消除使用 Python 的 Paramiko 库进行 SSH 并从远程计算机的 CLI 获取输出时出现的垃圾值?

shell - shell 中的 let vs expr vs 双括号算术

php - 从格式为 "DD MMM YYYY"的字符串中提取日期