我想刪除行所有非零元素小於一
我的文件是
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
為真(非零),則列印此行。