我想删除以下行所有非零元素小于一
我的文件是
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
如果任何元素非零且大于一,则设置
f
为1
(true)。f
如果
f
为真(非零),则打印此行。