如何在kubectl get pods输出中排除RESTARTS列(无需自定义列)
用awk等工具排除kubectl输出中的RESTARTS列
你执行的kubectl命令输出如下:
$ kubectl get pods -o wide -n logging-app-global --field-selector=status.phase=Running --show-labels NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES LABELS ax-fmrsp-rpt-6c476796-gzsvv 1/1 Running 1 (5h40m ago) 5h40m 10.127.3.187 ip-10-127-3-187.ec2.internal <none> <none> app=ax-fmrsp-rpt,pod-template-hash=6c476796 ax-manager-logging-sp-766574f4f9-6f8gb 1/1 Running 0 5h40m 10.127.2.87 ip-10-127-2-87.ec2.internal <none> <none> app=ax-manager-logging-sp,pod-template-hash=766574f4f9
不用-o custom-columns手动定义所有列的话,可以用awk实现自动排除RESTARTS列,这里提供两种可行的命令:
方法一:通过筛选列索引排除
kubectl get pods -o wide -n logging-app-global --field-selector=status.phase=Running --show-labels | awk 'NR==1{for(i=1;i<=NF;i++)if($i!="RESTARTS")cols[i];next}{for(i=1;i<=NF;i++)if(i in cols)printf "%s ",$i;print ""}'
逻辑说明:
- 处理表头行(
NR==1)时,遍历所有字段,把非"RESTARTS"的列索引存入数组cols - 后续数据行仅输出索引在
cols中的字段,自动跳过RESTARTS列
方法二:先定位列位置再排除
kubectl get pods -o wide -n logging-app-global --field-selector=status.phase=Running --show-labels | awk 'BEGIN{restarts_col=0}{if(NR==1){for(i=1;i<=NF;i++)if($i=="RESTARTS")restarts_col=i;}for(i=1;i<=NF;i++){if(i!=restarts_col)printf "%s ",$i}print ""}'
逻辑说明:
- 先在表头行找到RESTARTS列的位置并记录
- 所有行输出时直接跳过该位置的字段,实现排除效果
这两种方式都不需要手动列出所有保留列,能适配kubectl输出列顺序变化的场景。
内容的提问来源于stack exchange,提问作者Floren
相关产品推荐
相关产品推荐

