我需要正则表达式方面的帮助。我有一个包含 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)
使用任何 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)