首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从awk列表中删除大于日期的部署

如何从awk列表中删除大于日期的部署
EN

Unix & Linux用户
提问于 2020-07-14 20:19:01
回答 2查看 139关注 0票数 -1

我需要删除集群上超过14天的部署。如果我跑:

代码语言:javascript
复制
oc get deploy --sort-by=.metadata.creationTimestamp | grep wml-os-rt-hybrid | awk '{ print $1 "\t\t" $6;}'

它给了我一份这些部署的清单,以及它们的年龄:

代码语言:javascript
复制
wml-os-rt-hybrid0.1-gz3vczfc        15d
wml-os-rt-hybrid0.1-fj167pbt        8d
wml-os-rt-hybrid0.1-bdzkqi7z        7d
wml-os-rt-hybrid0.1-g4hclw4v        7d
wml-os-rt-hybrid0.1-j6x9tzt6        7d
wml-os-rt-hybrid0.1-qplkkilw        4d
wml-os-rt-hybrid0.1-sadgz9cz        6h

我对此非常陌生,我不知道我需要添加什么,这样它也会删除任何比14d更老的东西,在这种情况下,它只是一行,而在其他集群中,则是数百条。

EN

回答 2

Unix & Linux用户

发布于 2020-07-14 20:49:17

试试这个:

代码语言:javascript
复制
oc get deploy --sort-by=.metadata.creationTimestamp |
awk '/wml-os-rt-hybrid/ && !(($6 ~ /d$/) && (($6+0) > 14)){print $1 "\t\t" $6}'

假设首先打印的东西是您的“部署”,为了删除“部署”,您可以使用下面的注释中提到的oc delete deployment ,而您要删除的是不符合上述标准的“部署”S,那么类似这样的操作应该可以做到:

代码语言:javascript
复制
oc get deploy --sort-by=.metadata.creationTimestamp |
awk '!( /wml-os-rt-hybrid/ && !(($6 ~ /d$/) && (($6+0) > 14)) ){print $1}' |
xargs -n 1 oc delete deployment

如果你愿意的话,你可以做布尔代数来去除这种情况下的双负数。

票数 2
EN

Unix & Linux用户

发布于 2020-07-16 23:03:31

代码语言:javascript
复制
delfile=delete_file_names
... | awk -v delfile="$delfile" 'BEGIN { printf "","" >delfile }; '\
'{ value=$6; sub(".$","",value); '\
'if($6 ~ "h$") value=int(value/24); else value=int(value); }; '\
'value<15 { print $1 "\t\t" $6;}; '\
'value>14 { print $1 >delfile; }'

wml-os-rt-hybrid0.1-fj167pbt            8d
wml-os-rt-hybrid0.1-bdzkqi7z            7d
wml-os-rt-hybrid0.1-g4hclw4v            7d
wml-os-rt-hybrid0.1-j6x9tzt6            7d
wml-os-rt-hybrid0.1-qplkkilw            4d
wml-os-rt-hybrid0.1-sadgz9cz            6h

if [ -s "$delfile" ]; then
    IFS=\n' rm -- $(< "$delfile")
fi
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/598516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档