У меня есть файл с 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
В 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