Eu tenho um arquivo com 7.000 linhas e 28 colunas. Como deletar uma linha quando mesmo uma das 28 colunas tem valor menor que um?
Encontrei respostas com awk
as quais eles excluem uma linha quando uma coluna é especificada.
Mas quero excluir a linha independentemente do número da coluna que tenha valor menor que um.
Meu arquivo está em formato delimitado por tabulações.
arquivo de exemplo
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
Responder1
No Awk, você percorreria os campos (colunas) e testaria cada um deles. Como suas linhas têm uma primeira coluna não numérica, comece na segunda ( i=2
):
Então
awk '{for(i=2;i<=NF;i++){if($i+0 < 1) next}} 1' file
Ex. dado
$ 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
então
$ 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
Em Perl você poderia usar grep
o array dividido padrão @F
depois de mudar a primeira coluna:
perl -ane 'shift @F; print unless grep { $_ < 1 } @F' file