в цикле bash и xargs на nlines после канала - PullRequest
0 голосов
/ 18 декабря 2018

Команда, моя команда ниже, greps для любых модулей с проблемами, затем берет их один за другим и удаляет.

Но я хочу использовать только первые 10 строк моего командного вывода.

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

выше команда удаляется для всех строк, но я хочу сделать только для первых 10 строк.любой намек?

я однажды попробовал

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

, я знаю это, я могу использовать его для любого командного узла или модуля.

1 Ответ

0 голосов
/ 18 декабря 2018

Вы можете использовать head, чтобы получить первые 10 строк вывода перед переходом к xargs.Используйте параметр -n, чтобы указать, сколько строк (в данном случае, head -n10)

Непосредственно перед передачей в xargs введите следующее: | head -n10 |.Это отфильтрует все, кроме первых десяти строк предыдущего вывода.

Попробуйте это:

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

...