我试图从文件中筛选出内容,但有些-为什么它不起作用. 我的目标是过滤掉任何以"Build-"开头的东西,它的年龄在1天以上. 有时它显示分钟/小时/天,因此我需要过滤1D、24小时、1440米和更高. (X&>;=1D||X&>;=24小时||X&>;=1440M).
这是我的文本文件:
NAME STATUS AGE
argocd Active 10d
build-start-a Active 1d
build-start-b Active 22h
build-start-s Active 145m
default Active 12d
games Active 9d
kube-node-lease Active 12d
kube-public Active 12d
kube-system Active 12d
start-build-s Active 96m
这是我的命令:
cat test.txt | grep "^build-*" | awk '{ if ($3 >= 1d || $3 >= 24h || $3 >= 1440m) print $1 }'
结果是:
build-start-a
build-start-b
build-start-s
(而不仅仅是"构建-启动-a",因为它是唯一符合我希望的条件的.)
我的猜测是,bash比较了"22h"+"145m"和"1D",并假设"22h"+"145m"大于"1D",这就是为什么我看到三条线. 我try 了多种不同的If条件,但对我都不起作用. 我试图对这些值进行"硬编码",把"1D"写成"24小时",但效果不佳. try 使用Else If实现它,但结果是相同的.
如果能理解我做错了什么,并得到你的帮助,我将不胜感激!
谢谢:)