Cómo eliminar filas donde los elementos distintos de cero son menores que uno

Cómo eliminar filas donde los elementos distintos de cero son menores que uno

Quiero eliminar filas dondetodos los elementos distintos de ceroson menos de uno

mi archivo es

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     

La producción esperada es

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

Soy principiante. Lo intenté awk '{for(i=2;i<=NF;i++){if($i+0=0 print $0; else < 1) next}} 1'editando un código anterior como eneste enlace, pero estoy haciendo algo mal.

Respuesta1

Intentar:

$ 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

El código utiliza una variable f. Si ftermina como verdadero (distinto de cero), imprimimos la fila.

  • f=0

    Para cada fila, comience estableciendo fen falso (no imprimir)

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

    Si algún elemento no es cero y es mayor que uno, configúrelo fen 1(verdadero).

  • f

    Si fes verdadero (distinto de cero), imprima esta fila.

información relacionada