正则表达式排除小于 6 分钟的分钟和秒

Aja*_*jay 2 regex awk

我需要正则表达式方面的帮助。我有一个包含 pod 状态(包括年龄)的文件

NAMESPACE      NAME               READY   STATUS             RESTARTS        AGE
util           tomcat-1           0/1     Running            0               38m
util           tomcat-2           0/1     Running            0               15m
util           tomcat-3           0/1     Running            0               7m
util           tomcat-4           0/1     Running            0               4m
util           tomcat-5           0/1     Running            0               125s
util           tomcat-6           0/1     Running            0               88s
Run Code Online (Sandbox Code Playgroud)

现在我需要打印 Age 大于 6 分钟的 pod。所以在我的输出中我应该看到前 3 个 pod

我一直在使用这个正则表达式,但它在任何几秒和几分钟内都失败,其中包含 0-6 位数字,如 15m

awk '$NF !~ /[0-6][ms]/ { print }' file.txt
Run Code Online (Sandbox Code Playgroud)

Ed *_*ton 5

使用任何 awk,这可能就是您想要的:

$ awk '/m$/ && ($NF+0)>6' file
util           tomcat-1           0/1     Running            0               38m
util           tomcat-2           0/1     Running            0               15m
util           tomcat-3           0/1     Running            0               7m
Run Code Online (Sandbox Code Playgroud)

或者如果您可以比目标多几秒,则可能会这样,例如361s

$ awk '$NF*(/m$/ ? 60 : 1) > 360' file
util           tomcat-1           0/1     Running            0               38m
util           tomcat-2           0/1     Running            0               15m
util           tomcat-3           0/1     Running            0               7m
Run Code Online (Sandbox Code Playgroud)