Как удалить строку, если хотя бы один столбец строки имеет значение меньше единицы

У меня есть файл с 7000 строк и 28 столбцов. Как удалить строку, если даже один из 28 столбцов имеет значение меньше единицы?

Я нашел ответы с awk, в которых они удаляют строку, когда указан столбец.

Но я хочу удалить строку независимо от номера столбца, значение которого меньше единицы.

Мой файл в формате табуляции с разделителями.
файл примера

a       1       2       4       7       9
b       0.5     0.9     6       10      3
c       3       5       12      7       9
d       0.9     6       7       4       10
0
задан 12 June 2019 в 21:13

1 ответ

В Awk Вы циклично выполнились бы по полям (столбцы) и протестировали бы каждого. Так как Ваши строки имеют нечисловой первый столбец, запустите во втором (i=2):

Так

awk '{for(i=2;i<=NF;i++){if($i+0 < 1) next}} 1' file

Напр. данный

$ cat example
a       1       2       4       7       9
b       0.5     0.9     6       10      3
c       3       5       12      7       9
d       7.96681779026634e-05     6       7       4       10

затем

$ awk '{for(i=2;i<=NF;i++){if($i+0 < 1) next}} 1' example
a       1       2       4       7       9
c       3       5       12      7       9

В Perl Вы могли grep разделение по умолчанию @F массив после переключения на верхний регистр первого столбца:

perl -ane 'shift @F; print unless grep { $_ < 1 } @F' file
1
ответ дан 12 June 2019 в 21:13

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

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