如何删除非零元素小于一的行

如何删除非零元素小于一的行

我想删除以下行所有非零元素小于一

我的文件是

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

尝试:

$ 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结果为真(非零),则打印该行。

  • f=0

    对于每一行,首先设置f为 false (不打印)

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

    如果任何元素非零且大于一,则设置f1(true)。

  • f

    如果f为真(非零),则打印此行。

相关内容