in bash 和 xargs 在管道后的 nlines 上循环

in bash and xargs loop on nlines after pipe

团队, 我的以下命令,对任何 pods 有问题的问题进行 greps,然后将它们一一删除。

但我只想使用命令输出的前 10 行。

kubectl get pods --all-namespaces | grep -i -e Evict -e Error | 
    awk -F ' ' '{print , , }' | 
    xargs -l1 -- sh -c 'kubectl delete pod "" -n ""' --

以上命令正在删除所有行,但我只想删除前 10 行。有什么提示吗?

我试过了

kubectl get pods --all-namespaces | grep -i -e Evict -e Error | 
    awk -F ' ' '{print , , }' | for run{1..10}; do 
        xargs -l1 -- sh -c 'kubectl delete pod "" -n "" ' --; 
    done

曾经,我知道这一点,我可以将它用于任何命令节点或 pod。

您可以使用 head 在传递给 xargs 之前获取前 10 行输出。使用 -n 选项指定多少行(在本例中,head -n10

就在传送到 xargs 之前,插入以下内容:| head -n10 |。这将过滤前面输出的前十行以外的所有内容。

试试这个:

kubectl get pods --all-namespaces | grep -i -e Evict -e Error | awk -F ' ' '{print , , }' | head -n10 | xargs -l1 -- sh -c 'kubectl delete pod "" -n ""' --