Ваш текущий подход верен, ясен и работает так, как рекламируется, нет никакой реальной необходимости его менять.
Однако, если вы хотите протестировать еще больше столбцов, скажем все столбцы после столбца 3, это может привести к несколько длинной awk
программе (, если столбцов много ).
Другой способ сделать это — использовать цикл:
$ awk -F '|' '{ for (i=4; i<=NF; ++i) if ($i == 0) next; print }' file
TEST|RALPH|JACKSON|2|3|1
TEST|DAVE|KNIGHT|1|3|1
Эта awk
программа проверяет значения всех столбцов после столбца 3 и пропускает текущую строку, как только обнаруживается столбец, значение которого равно нулю. Если ноль не найден, печатается текущая строка.