Как удалить строки, где ненулевые элементы - меньше чем один

Я хочу удалить строки, где все ненулевые элементы - меньше чем один

Мой файл

a   2   0   0   0   9
b   3   0   0   0.7 13
c   0.3 0.5 0   0   0
d   0.4 7.96681779026634e-05    0       0     

Ожидаемый вывод

a   2   0   0   0   9
b   3   0   0   0.7 13

Я - новичок. Я попробовал awk '{for(i=2;i<=NF;i++){if($i+0=0 print $0; else < 1) next}} 1' путем редактирования предыдущего кода как в этой ссылке, но я делаю что-то не так.

1
задан 15 June 2019 в 09:16

1 ответ

Попробуйте:

$ awk '{f=0; for(i=2;i<=NF;i++) if($i+0!=0 && $i+0>=1)f=1} f' file
a  2   0   0   0   9
b   3   0   0   0.7 13

Код использует переменную f. Если f заканчивается как true (не ноль), то мы печатаем строку.

  • f=0

    Для каждой строки установите для f значение false (не печатать)

  • for(i=2;i<=NF;i++) if($i+0!=0 && $i+0>=1)f=1

    Если какой-либо элемент не равен нулю и больше единицы, установите для f значение 1 (true).

  • f

    Если f имеет значение true (отличное от нуля), выведите эту строку.

  • [+1121]
0
ответ дан 15 June 2019 в 09:16

Другие вопросы по тегам:

Похожие вопросы: